我正在使用代码优先方法来生成我的数据库。在其中一种情况下,有一个继承层次结构可以正确映射到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中获取一行后读取它的值)。
感谢您的帮助。