我有两个班级,有 1 - 1..* 的关系。
class A
{
public long Id;
public virtual ICollection<B> Bees;
}
class B
{
public long Id;
public A MyA;
}
现在,我试图让我的数据库正常运行,以便 A 的任何实例都必须在其 ICollection 中至少有一个 B,并且没有上限。B 的任何行都应该具有对 A 行的外键引用。我的映射如下所示:
public AMapping()
{
this.ToTable("A");
this.HasKey(x => x.Id);
}
public BMapping()
{
this.ToTable("B");
this.HasKey(x => x.Id);
this.HasRequired(x => x.MyA)
.WithMany(x => x.Bees);
}
我这样做时的预期行为:
var aaaaah = new A();
aaaaah.Bees = null;
MyDbContext.A.Add(a);
应该是抛出异常。但是实体框架插入时没有任何抱怨。我在映射中做错了什么?
编辑:我通过在 Bees 属性上放置 [System.ComponentModel.DataAnnotations.Required] 注释,为该问题做出了一个丑陋的临时解决方案。但这仅检查 Bees 是否为空,而不是实例化时是否为空列表。