0

화재 발생하고 싶습니다. OnModelCreating every new DataContext(new Entity()) ... 하지만 테이블 연결을 만들면 작동합니다. 때, 나는 오류를 가지고 있기 때문에, 그래서 다시 나던 작업을 OnModelCreating,화재를 강제하는 방법 OnModel 모든 DataContext를 초기화합니다.

매뉴얼은 당신이 덮여있어왔다
public class DataContext : DbContext 
{ 
    private BaseEntity _entity; 

    public DataContext(BaseEntity entity) 
    { 
     Database.Connection.ConnectionString = Parameters.ConnectionString; 

     _entity = entity; 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 

     _entity.Map(modelBuilder); // this is dynamic fluent api here 
    } 
} 

답변

1

the entity type <tableName> is not part of the model for the current context.

을 다른 테이블에 대한 연결을 만들!

DbContext.OnModelCreating Method (DbModelBuilder)

...

설명 통상적으로,이 방법은 한 번 유래 콘텍스트의 첫 번째 인스턴스가 생성 될 때 호출

. 그러면 해당 컨텍스트의 모델이 캐싱되고 app 도메인의 모든 컨텍스트 인스턴스에 적용됩니다. 이 캐싱은 지정된 ModelBuidler [sic]에 ModelCaching 속성을 설정하여 비활성화 할 수 있지만 성능이 심각하게 저하 될 수 있습니다. DbModelBuilder 및 DbContextFactory 클래스를 직접 사용하여 캐싱에 대한 더 많은 제어가 제공됩니다.

가 가능하다면 당신은 일반적인 DbContextpublic class DataContext<TBaseEntity> : DbContext처럼 탐험 할 수도 있지만

. 그러면 TBaseEntity 유형 당 하나의 DataContext 유형이있는 아키텍처로 안내합니다.

+0

내 프로젝트에는 사용할 수없는 제네릭을 사용할 수 없습니다. Unit Of Work는 내 프로젝트에서이를 차단합니다. 이 사용법은 지금 당장 나를 위해 더 유용합니다. –

+0

db 작업이있을 때 모든 엔티티에 대해 DataContext를 이미 작성하고 있습니다. 그러나 datacontext를 처음 생성 한 후에는 onmodelconfiguring이 더 이상 작동하지 않습니다. 하지만 저는 유창한 API를 바꿔야 만합니다. 그래서 나는 onmodelcreating을 발사해야합니다. –

+0

런타임시 DbModelBuilder에 유창한 API를 실행할 수 있습니까? –