首先,我需要在EF Code First中定义“多对多”自引用。不幸的是,Breeze不支持这一点。我的意思是每当我查询微风时,我都没有得到Friends
上展开的数据。见这里:Self-referencing many-to-many relationship EF code first
所以解决方案似乎是“多对一对多”。
所以这是我的课程:
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属性之外,我在查询中获取所有数据。
有人知道如何实现这个目标吗?
感谢。
答案 0 :(得分:0)
您尚未指定关系的集合属性。使用以下流畅的映射。
modelBuilder.Entity<LinkedPerson>()
.HasRequired(p => p.Person)
.WithMany(p => p.Friends)
.WillCascadeOnDelete(false);