gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 03:54:44 26 4
gpt4 key购买 nike

我使用带有 Durandal/Breeze 模板的 ASP.NET MVC。

假设我有以下类(class):

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"));

数据库生成成功。

问题是当我演奏曲子时

使用 Breeze (客户端)我没有 Friends 的数据属性(property)。
    var query = entityQuery.from('Person')
.where('id', '==', 123)
.expand("Friends");

执行查询时,我得到的结果是请求的 People 实体除了 Friends 属性之外的所有数据始终是一个空数组。当我检查 Json 答案时,我看到数据也在传输。甚至是 Friends 属性的数据。然而,它们并没有链接到 Friends 属性本身。

我的问题:我该怎么做才能让我的 Friends 属性充满值?

谢谢。

最佳答案

您必须在 Person 中声明一个外键。 Breeze 要求 FK 正确解析关联。

编辑:

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

关于entity-framework - 自引用多对多关系EF代码优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18336511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com