.edmx 파일이 하나 있고 app.config에 세 개의 연결 문자열이있는 프로그램이 있습니다.
.edmx가 나타내는 스키마는 3 개의 데이터베이스에서 동일합니다.
기본적으로이 작업을 수행하는 방법을 만들고 싶습니다 (경고! 의사 코드 수신)
foreach(var connectionString in connectionStrings) {
using (MyCustomDBEntities context = new MyCustomDBEntities(connectionString)) {
// Do cool things, like insert new records, update records, etc...
}
}
지금 제가 가지고있는 코드는 실제로 이것입니다. 연결 문자열을 받아들이는 다른 메서드 서명이 보이지 않습니다.
foreach(var connectionString in connectionStrings) {
using (MyCustomDBEntities context = new MyCustomDBEntities()) {
// Do cool things, like insert new records, update records, etc...
}
}
using 블록의 Entity Framework 생성자가 연결 문자열을 사용하도록하는 방법이 있습니까? 지금 EF 6.1을 사용하고 있는데 방법을 찾을 수 없습니다.
또한 Entity Framework를 사용하여이 작업을 수행하는 더 좋은 방법이 있다면 Entity Framework를 사용하는 것이 필수 이지만 코드를 전환하게되어 기쁩니다 .
더 많은 코드가 필요한 경우 알려 주시면 업데이트하겠습니다.
EDMX를 만들 때 연결 문자열이 하나 뿐인 모델이라고 가정하는 컨텍스트 개체를 설정합니다. 이것은 쉽게 변경되므로 여러 중복 데이터베이스가있는 여러 연결 문자열을 가질 수 있습니다.
모델 코드가 자동 생성되면 단일 연결 DB 컨텍스트로 끝납니다. 이것이 소스 파일에서 보이는 모습입니다 ...
-- MyModel.edmx
-- MyModel.Context.tt
-- MyModel.Context.cs
들여다 보면 MyModel.Context.cs
이걸 보셔야합니다 ...
public partial class MyContext : DbContext
{
public MyContext ()
: base("name=MyConnectionString")
{
}
...
}
MyConnectionString
앱 구성의 연결 문자열에 해당합니다. 자체 연결 문자열을 사용하는 생성자 오버로드는 없지만 연결 문자열을 사용 하는 오버로드가 partial class
있다는 사실을 활용할 수 있기 때문에 괜찮습니다 DBContext
.
동일한 네임 스페이스에 다른 파일을 만들고이 MyContext
코드를 가이드로 사용하기 만하면 됩니다.
public partial class MyContext : DbContext
{
public MyContext (string nameOrConnectionString)
: base(nameOrConnectionString)
{
}
...
}
끝난. 이제 모든 연결 문자열에 컨텍스트를 사용할 수 있습니다.
using(var context = new MyContext(connectionstring1))
{
...
}
using(var context = new MyContext(connectionstring2))
{
...
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다