实体框架6.1显式鉴别器列

时间:2014-04-23 06:59:17

标签: c# entity-framework ef-code-first

我正在使用代码优先方法来生成我的数据库。在其中一种情况下,有一个继承层次结构可以正确映射到TPH场景。但是,创建(自动)的Discriminator列在基本C#类中不可用。

我希望基类具有该Discriminator属性,但是如果我添加具有该名称的属性,则在update-database之后生成的DB具有名为Discriminator1的列。

我试过了 -

modelBuilder.Entity<BaseClass>()
.Map<DerivedClass1>(m => m.Requires("Discriminator").HasValue("DerivedClass1").IsRequired())
.Map<DerivedClass2>(m => m.Requires("Discriminator").HasValue("DerivedClass2").IsRequired())
.Map<DerivedClass3>(m => m.Requires("Discriminator").HasValue("DerivedClass3").IsRequired());

但是,当我尝试输入种子数据时,我收到此错误 -

System.Data.Entity.Core.EntityCommandCompilationException:准备命令定义时发生错误。有关详细信息,请参阅内部异常---&GT; System.Data.Entity.Core.MappingException: (526,10):错误3032:从第526行开始映射片段的问题:映射了条件成员'BaseClass.Discriminator',其条件不是'IsNull = False'。删除BaseClass.Discriminator上的条件或从映射中删除它。

所以我想要的是在C#类中看到Discriminator属性,而不使用任何额外的列(我想从DB中获取一行后读取它的值)。

感谢您的帮助。

0 个答案:

没有答案
相关问题