2013-08-21 22 views
0

首先,我需要在EF Code First中定义“多对多”自引用。不幸的是,这不是Breeze支持的。我的意思是每当我查询微风时,我的Friends的扩展数据都没有。看到这里:Self-referencing many-to-many relationship EF code firstBreeze不会在“多对一”对象引用中扩展我的导航属性

因此,解决方案似乎是“多对一对多”。

因此,这里是我的课:

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流利的API:

modelBuilder.Entity<LinkedPerson>() 
       .HasRequired(p => p.Person) 
       .WithMany() 
       .WillCascadeOnDelete(false); 

在运行时,成功生成的数据库,但我仍然无法查询微风检索朋友的财产。因此,除了Friends属性,我在我的查询中获得了所有数据。

有人有一个想法如何实现这一点?

谢谢。

回答

0

您尚未指定关系的集合属性。使用以下流畅映射。

modelBuilder.Entity<LinkedPerson>() 
      .HasRequired(p => p.Person) 
      .WithMany(p => p.Friends) 
      .WillCascadeOnDelete(false); 
+0

非常感谢你,那就是我所需要的。 – Bronzato