2010-07-15 3 views
2

방금 ​​EF Code First CTP 4로 업그레이드했으며 ContextBuilder 클래스가 제거 된 것처럼 보입니다. 나는 현재 그렇게 (CTP 3)처럼 내 ObjectContext를 만들기 :EF 코드에서 ObjectContext 빌드 첫 번째 CTP4

나는 그들의 예제의 많은처럼 된 ObjectContext에서 파생 하드 코딩 클래스를 생성하지 않으
var contextBuilder = new ContextBuilder<ObjectContext>(); 
var connstr = ConfigurationManager.ConnectionStrings["MyConn"]; 
var connection = new SqlConnection(connstr.ConnectionString); 
var ctx = contextBuilder.Create(connection); 

할 것으로 보인다. 누구든지 새 버전에서이 작업을 수행하는 방법을 알고 있습니까?

답변

5

그것을 수행해야하는 수정 방법입니다 응용 프로그램 당 한 번만 CreateModel을 호출하기를 원합니다.

+0

굉장! 내가 필요한 것! 감사합니다 :) –

3

나는 ConntextBuilder가 최신 CTP에서 ModelBuilder으로 바뀌 었습니다. 새로운 빌더는 이전과 동일하게 작동하지 않는, 그래서 당신은 여기에 읽을 할 수 있습니다 :

var modelBuilder = new ModelBuilder(); 
var dbModel = modelBuilder.CreateModel(); 
var ctx = dbModel.CreateObjectContext<ObjectContext>(connection); 

참고 :

여기 http://blogs.msdn.com/b/adonet/archive/2010/07/14/ctp4codefirstwalkthrough.aspx

2

CTP3의 ContextBuilder는 ObjectSet 속성에서 노출 한 엔터티 형식을 자동으로 검색하지만 ModelBuilder.DiscoverEntitiesFromContext 메서드를 호출하여이 작업을 수행 할 수도 있습니다.

var builder = new ModelBuilder(); 
builder.DiscoverEntitiesFromContext(typeof(MyContext)); 
var model = builder.CreateModel(); 
var context = model.CreateObjectContext<MyContext>(connection); 

은 분명히이 분할 컨텍스트 생성 프로세스에 추가 단계가, 그 뒤에 동기는 DbModel (또는 비슷한 종류의) 미래에 EF의 모델에 대한 기본 표현 될 것입니다 될 것입니다 추가 ModelBuilder를 뛰어 넘는 다른 모델 생성 옵션의 출력. DbModel은 응용 프로그램 전체에서 캐시되어야하는 단위이기도합니다.

+0

요점은 내가 사용자 정의 MyContext 클래스를 만들고 싶지 않다는 것입니다. Repository에 일반 ObjectContext를 주입하고 Repository 내에 내 ObjectSet 을 생성합니다. –

관련 문제