前几天使用code first碰到错误:列名 'Discriminator' 无效。这是一个很少见的错误,搜索了很久才发现是code first的poco实体对象的继承问题。
比如,我定义了一个实体类,对应数据库的Project表:
public
class Project{ int
Id { get;
set; } string
Name { get;
set; }} |
后来又定义了一个子类ChildProject继承于它,但是子类不对应数据库任何表:
public
class ChildProject : Project{} |
于是每次EF的Context访问到Project或者ChildProject的时候,都出现了错误:列名 'Discriminator' 无效。
解决办法:子类并不映射到任何数据库,加上一个不映射的属性[NotMapped]就可以了。
[NotMapped]public
class ChildProject : Project{}
本文介绍了使用Entity Framework CodeFirst模式时遇到的一个关于实体类继承的问题。当子类未映射到数据库表时,会引发列名'Discriminator'无效的错误。文章提供了具体的解决方案。
8万+

被折叠的 条评论
为什么被折叠?



