2012-03-15 2 views
2

EF를 사용하여 MVC3 응용 프로그램부터 시작합니다. 우리는> 200 개의 테이블을 가진 데이터베이스를 가지고 있습니다. DBFirst 메서드를 사용하고 있습니다.다른 EntityFramework 모델에 대한 동일한 연결 문자열입니까?

내 생각은 전체 db 스키마를 하나의 큰 모델로 만드는 대신 앱의 여러 영역에 대해 EFModel을 만드는 것이 었습니다. 나는 이제 각 모델이 자신의 연결 고리를 원하는 것처럼 보이는 문제에 직면 해있다. 나는 하나의 공통적 인 협박으로 성공적으로 변화하지 못했습니다. 그게 가능하지 않아야합니까? 나는 그것이 백그라운드에서 같은 DB라고 생각하고있다. ...

나는 완전히 여기에서 떨어져 있냐? 모든 테이블을 하나의 큰 모델로 드래그해야합니까? 또는 내가 많은 연결 고리를 얻을 것이라는 사실을 받아 들일 것인가?

통찰력이 있으십니까?

답변

1

EDMX metadata is part of the EF connection string이기 때문에 여러 EDMX 모델에 하나의 EF 연결 문자열을 사용할 수 없습니다.

이 모든 연결 문자열에 포함 된 DB 연결 문자열이 포함되어 있다는 점을 제외하고는 문제가 아니어야하며 5가 아닌 한 위치에서 변경할 수 있습니다. , 업데이트 런타임시 DB 연결 문자열 부분은 EntityConnectionStringBuilder입니다. 따라서 DB 연결에 "일반"(비 EF) 연결 문자열을 사용할 수 있습니다. 그런 다음 EntityConnectionStringBuilder를 사용하여 컨텍스트를 만들 때 EF 연결 문자열로 바꿉니다. 내 머리 위로 떨어져

, 코드가 같은 것을 보일 것이다 :

var dbCS = ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString; 
var model1CS = ConfigurationManager.ConnectionStrings["Model1ConnectionString"].ConnectionString; 
var ecsb = new EntityConnectionStringBuilder(model1CS); 
ecsb.ProviderConnectionString = dbCS; 

return new Model1Entities(ecsb.ToString()); 
0

어쩌면 web.config에서 연결 문자열 또는 해당 이름을 하드 코딩 할 수있는 기본 컨텍스트를 만들어야합니다. 컨텍스트 부모는 al db의 일부만 가질 수 있으며 부모 컨텍스트에서 공통 엔티티를 설명하는 경우에도 모든 자식에서 사용해야합니다.

0

을 왜 엔티티 프레임 워크를 사용해야합니까? EF가 적합한 해결책이 아닐 수도 있습니다.

Simple.Data과 같은 다른 ORM을 사용하는 것이 좋습니다.

관련 문제