是否可以在不同上下文中继承的上下文中修改/替换实体配置?
示例:我在名为Framework的解决方案中名为Data.Access的项目中有Context。它的OnModelCreating函数因此增加了实体配置:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// TestEntityConfiguration is the configuration of an entity named TestEntity in the Framework solution
modelBuilder.Configurations.Add(new TestEntityConfiguration());
// multiple other configurations...
}
在另一个名为FrameworkConsumer的解决方案中,我有一个Local.Data.Access项目,它有一个Context类,它在Framework解决方案中从Data.Access扩展Context。它的OnModelCreating函数如下所示:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Adds all the configurations from the Context in Data.Access in the Framework solution
base.OnModelCreating(modelBuilder);
// Other configurations local to the extended context go here...
}
我的问题是这个。在FrameworkConsumer解决方案的Local.Data.Access项目中,如果我想为TestEntity添加额外的配置设置或不同的配置,如何实现或者可以完成?我已经尝试添加另一个配置但是,我收到错误声明已经配置了此实体(TestEntity)。目前,我添加额外配置的解决方案是在Local.Data.Access Context类的Dispose函数中使用Database.ExecuteSqlCommand。不优雅,但它的工作原理。任何想法/建议将不胜感激。
由于
答案 0 :(得分:0)
您可以将该配置放在另一个虚拟方法中,如果需要更改,可以覆盖该方法。例如:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// multiple other configurations...
SpecialConfigurations(modelBuilder);
}
protected virtual void SpecialConfigurations(DbModelBuilder modelBuilder)
{
// TestEntityConfiguration is the configuration of an entity named TestEntity in the Framework solution
modelBuilder.Configurations.Add(new TestEntityConfiguration());
// multiple other configurations...
}
然后覆盖SpecialConfigurations方法。