2012-09-07 1 views
3

데이터베이스 기반의 생성 된 ObjectContext와 EntityObjects를 가진 레거시 EF 4 라이브러리가 있습니다. 나는 천천히 DbContext를 사용하여 마이 그 레이션하고 싶습니다.EDMX 응용 프로그램을 천천히 마이그레이션하여 DbContext를 사용 하시겠습니까?

DbContext의 오버로드 중 하나는 기존 ObjectContext를 사용합니다. 이 방법으로 DbContext에서 기존의 ObjectContext를 래핑하고 IDbSet 속성을 통해 기존의 EntityObjects를 노출 할 수 있다고 생각했습니다. 아쉽게도 DbContext를 만들 때 IDbSet 속성이 만들어지지 않고 대신 다음 메시지와 함께 예외가 throw됩니다. "형식이 클래스로 정의되었는지, 프리미티브, 중첩 또는 범용이 아니며 EntityObject에서 상속되지 않는지 확인합니다. "

IDbSet에서 기존 ObjectContext와 EntityObjects를 노출하는 DbContext를 사용할 방법이 없습니까? ObjectContext를 사용하여 DbContext를 만들 수 있지만 엔티티 자체는 노출시키지 않는 것이 이상하게 보입니다.

public class MyDbContext : DbContext 
{ 
    public MyDbContext(MyObjectContext objectContext, bool dbContextOwnsObjectContext) 
     : base(objectContext, dbContextOwnsObjectContext) 
    { 
    } 

    public IDbSet<Person> People { get; set; } 
} 

예외가 IDbSet를 만들기 위해 노력 DbContext로 인해 발생 :

는 여기에 몇 가지 예제 코드입니다. Person은 기존 EDMX의 EntityObject입니다.

답변

2

언급했듯이 edmx에서 만든 기존 엔티티 개체는 사용할 수 없습니다.

Reverse Engineer Code First power tools을 사용해 보셨습니까?

저는 여러 프로젝트에서 사용했으며 데이터베이스에서이를 가리키는 것처럼 간단했으며 동일한 프로젝트에서 모델을 생성 한 다음 edmx 파일을 제거했습니다.

관련 문제