0

最初に、EF Code First で「多対多」の自己参照を定義する必要がありました。残念ながら、これは Breeze ではサポートされていません。つまり、ブリーズにクエリを実行するたびに、展開するデータが得られませんFriends。ここを参照してください:自己参照多対多関係 EF コードを最初に

したがって、解決策は「多対1対多」のようです。

だからここに私のクラスがあります:

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 に答える