3

是否可以在不同上下文中继承的上下文中修改/替换实体配置?

示例:我在名为 Framework 的解决方案中名为 Data.Access 的项目中有上下文。它的 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。不优雅,但它有效。任何想法/建议将不胜感激。

谢谢

4

1 回答 1

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 方法。

于 2013-03-12T18:02:02.893 回答