引用命名空间:
using System.ComponentModel.DataAnnotations.Schema;
和数据库非对应的字段名上添加特性:
[NotMapped]
public string IsEnabled { get; set; }
引用:
前几天使用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 |
{ |
}
本文探讨了使用CodeFirst时遇到的实体继承与数据库映射冲突导致的‘列名'Discriminator'无效’错误,并提供了解决方案。通过在子类中添加[NotMapped]特性,避免了该错误的出现。
939

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



