0

起初,我需要在 EF Code First 中定义“多对多”自引用。不幸的是,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);

在运行时,数据库已成功生成,但我仍然无法查询微风来检索 Friends 属性。结果,我在查询中获得了除 Friends 属性之外的所有数据。

有人知道如何实现这一目标吗?

谢谢。

4

1 回答 1

0

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

modelBuilder.Entity<LinkedPerson>()
            .HasRequired(p => p.Person)
            .WithMany(p => p.Friends)
            .WillCascadeOnDelete(false);
于 2013-08-21T09:04:05.200 回答