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

时间:2009-12-04 09:45:34

标签: entity-framework inheritance

我刚读过this nice article,它教我如何使用继承(Table-per-hirarchy)。

我想知道,说我有一个需要在子类中使用的专栏'HireDate'。 可以肯定的是,在DB中它必须标记为可为空,但是如何在EDM中将其标记为不可为空? 我试图将它设置为不可空,但后来它说它需要一个默认值,我希望默认值是DateTime.Now,而不是一个常量值。

1 个答案:

答案 0 :(得分:0)

如果在派生类型上声明了属性(如HireData)并且您正在使用TPH,那么您绝对应该能够在EDM中将其标记为不可为空,尽管它在数据库中可以为空。

事实上,这种能力是TPH的特征之一。

...

所以我查看了有问题的博客帖子,发现它有问题,因为它将鉴别器列(PersonCategory)公开为基本实体的属性,如果允许则会生成实体的类型可变,因为你可以很容易地做到这一点:

student.PersonCategory = 2;

哪会让学生成为管理员! EF不允许这样做。

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

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

解决Blog Post中的问题:从Person类中删除PersonCategory属性。

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

亚历