1,最近自学MVC+EF 框架中出现了一个错误,我定义了一个Model类型huodong(在数据库中表名称为huodongs),并且定义了一个huodong的子类HD继承它,如下
public class huodong
{
public int Id { get; set; }
public string Name { get; set; }
public string BaoMingDiDian { get; set; }
public string U_Context { get; set; }
public string HuoTime { get; set; }
public DateTime Opre_Time { get; set; }
}
public class HD : huodong
{
}
但是每次运行时都会出现这个错误
后来查阅资料才发现,code first 的poco实体对象的继承问题,每次EF的Context访问到Project或者ChildProject的时候,都出现了错误:列名 'Discriminator' 无效,因为每次映射的时候没找到对应的列就报错了
解决办法:子类并不映射到任何数据库,加上一个不映射的属性[NotMapped]就可以了。
public class huodong
{
public int Id { get; set; }
public string Name { get; set; }
public string BaoMingDiDian { get; set; }
public string U_Context { get; set; }
public string HuoTime { get; set; }
public DateTime Opre_Time { get; set; }
}
[NotMapped]
public class HD : huodong
{
}
[NotMapped]就是阻止DBContext的时候对这个类进行数据库表的映射,引用的程序集
using System.ComponentModel.DataAnnotations.Schema;