Entity framework 表继承中不可为空的字段-EDM

Entity framework 表继承中不可为空的字段-EDM,entity-framework,inheritance,Entity Framework,Inheritance,我刚刚读了一本书,它教会了我如何使用继承(每个hirarchy的表) 我想知道,假设我有一个专栏“HireDate”,需要在子类中使用。 这是肯定的,在DB中它必须标记为可为null,但是如何在EDM中将它标记为不可为null呢? 我试图将其设置为不可为null,但它说它需要一个默认值,我希望默认值为DateTime。现在,不是常量值。如果是属性(如HireData)是在派生类型上声明的,并且您正在使用TPH,您应该能够在EDM中将其标记为不可为null,尽管它在数据库中是可为null的 事实上

我刚刚读了一本书,它教会了我如何使用继承(每个hirarchy的表)

我想知道,假设我有一个专栏“HireDate”,需要在子类中使用。 这是肯定的,在DB中它必须标记为可为null,但是如何在EDM中将它标记为不可为null呢? 我试图将其设置为不可为null,但它说它需要一个默认值,我希望默认值为DateTime。现在,不是常量值。

如果是属性(如HireData)是在派生类型上声明的,并且您正在使用TPH,您应该能够在EDM中将其标记为不可为null,尽管它在数据库中是可为null的

事实上,这种能力是学生的特点之一

因此,我查看了这篇有问题的博客文章,注意到它有一个问题,因为它将discriminator列(
PersonCategory
)公开为基本实体的属性,如果允许,将使实体的类型可变,因为您可以很容易地做到这一点:

student.PersonCategory = 2;
这将使学生成为管理员!这是EF不允许的

因此,如果您密切关注这个示例,这可能是您的问题

保存鉴别器的列不应映射到EDM中的属性,它应仅用于映射(即映射窗口中“映射到XXX”下的“添加条件”)

博客文章中问题的解决方案:从Person类中删除PersonCategory属性

无论如何,我希望这有帮助


Alex

为什么不在每节课上使用表格?“你不需要”重新发明自行车。不要使用EF的每班表,这绝对是不推荐的。。。对不起,我指的是每种类型的桌子。