entity-framework – 首先自引用多对多关系EF代码

我使用ASP.NET MVC和Durandal / Breeze模板.

假设我有以下课程:

public class Person
{
    public int Id { get; set; }
    public string Firstname { get; set; }    
    public string Lastname { get; set; }
    public virtual List<Person> Friends { get; set; }
}

使用以下EF Fluent API:

modelBuilder.Entity<Person>()
            .HasMany(m => m.Friends)
            .WithMany()
            .Map(m => m.ToTable("Friends"));

数据库已成功生成.

问题是当我执行一个que

和Breeze(客户端)我没有Friends属性的数据.

    var query = entityQuery.from('Person')
        .where('id', '==', 123)
        .expand("Friends");

当执行查询时,我得到所请求的People实体,除了Friends属性之外的所有数据总是一个空数组.当我检查Json答案时,我看到数据也被传输了.甚至是Friends属性的数据.但是它们与Friends属性本身没有关联.

我的问题:如何让我的朋友财产充满价值,我该怎么做?

谢谢.

最佳答案 您必须在Person中声明外键. Breeze要求FK正确解析关联.

编辑:

我刚刚意识到你在问一个多对多的关系. (是的,我应该看过帖子标题……)
Breeze不支持多对多关联.
但是,您可以将两个一对多关系作为多对多关系工作. (即多对一对多)在这种情况下,您需要定义链接表/实体和外键,如前所述. (见http://www.breezejs.com/documentation/navigation-properties)

点赞