0

我想啓動OnModel創建每個new DataContext(new Entity()) ... 但是,當我創建一個表的連接,它的工作原理。當創建另一個表的連接,再次OnModelCreating行不通的,所以因爲我也有錯誤,如何強制啓動OnModel創建每個DataContext初始化

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

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

該手冊爲您提供!

DbContext.OnModelCreating Method (DbModelBuilder)

...

備註

典型地,該方法被稱爲僅在創建派生上下文的第一個實例一次。然後,該上下文的模型將被緩存,並用於應用程序域中上下文的所有更多實例。可以通過在給定的ModelBuidler [原文]上設置ModelCaching屬性來禁用此緩存,但請注意,這可能會嚴重降低性能。通過直接使用DbModelBuilder和DbContextFactory類提供了對緩存的更多控制。

儘管如果可能的話,您可能想要探索一個通用的DbContext,如public class DataContext<TBaseEntity> : DbContext。這將引導您進入一個架構,其中每個TBaseEntity類型有一個DataContext類型。

+0

我不能使用通用的,不適用於我的項目。工作單元將其封鎖在我的項目中。這個用法現在對我更有用。 –

+0

當我有一個db操作時,我已經爲每個實體創建了DataContext。但是在首次創建datacontext之後,onmodel配置不再起作用。但我必須改變流利的API,所以我必須開啓模式創建。 –

+0

有沒有辦法在運行時爲DbModelBuilder運行流暢的api? –