我有一个基类重用与实体框架6.0,流利的API必需的属性一栏,并DataAnnotations
public class BaseClass
{
public int Id {get; set;}
}
和两个派生类
public class Foobar: BaseClass
{
[Required]
public int Whatever {get; set;}
}
public class Snafu: BaseClass
{
[Required]
public int Whatever {get; set;}
}
我使用表,每个层级继承并试图削减我的重复列,所以用流利的API我已经映射他们像这样:
modelBuilder.Entity<Foobar>().Property(fb => fb.Whatever).HasColumnName("Whatever");
modelBuilder.Entity<Snafu>().Property(sf => sf.Whatever).HasColumnName("Whatever");
然而,这导致在
(137,10):错误3023:问题在映射片段起始于线137:在表列的BaseClass BaseClass.Whatever必须映射:它没有缺省值和不可为空。
在EF6中,如果从两个子类中取掉[Required]
属性,此类映射似乎工作正常。将[DefaultValue(0)]
属性添加到两个派生类都不能解决问题。
任何想法如何让这些属性共享数据库中的列,同时保持其必需的属性?
我不知道你为什么没有基类中的“无论”?这个属性可以在你的子类型中使用。 – PilotBob
这些类仅用于演示目的。在几个派生类中的实际应用程序中,只有一对共享一个不在基类中的属性,以及这些属性由接口强制执行的派生类。 – joelmdev
找到一个已验证的错误,仍然没有得到upvote:\ – joelmdev