起初,我需要在EF Code first中定义一个"多对多"的自引用。不幸的是,Breeze并不支持这一点。我的意思是,每当我查询breeze时,我在Friends
上的扩展都不会得到任何数据。参见此处:自参考多对多关系EF代码第一
因此,解决方案似乎是"多对一对多"。
下面是我的课程:
public class Person
{
public int Id { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
public virtual List<LinkedPerson> Friends { get; set; }
}
public class LinkedPerson
{
[Key, Column(Order = 0)]
public int PersonId { get; set; }
[Key, Column(Order = 1)]
public int PersonRelatedId { get; set; }
public virtual Person Person { get; set; }
public virtual Person PersonRelated { get; set; }
}
使用以下EF Fluent API:
modelBuilder.Entity<LinkedPerson>()
.HasRequired(p => p.Person)
.WithMany()
.WillCascadeOnDelete(false);
在运行时,数据库生成成功,但我仍然无法查询breeze来检索Friends属性。结果,除了Friends属性之外,我在查询中得到了所有数据。
有人知道如何做到这一点吗?
谢谢。
您尚未指定关系的集合属性。使用以下流畅的映射。
modelBuilder.Entity<LinkedPerson>()
.HasRequired(p => p.Person)
.WithMany(p => p.Friends)
.WillCascadeOnDelete(false);