2016-04-13 2 views
0
public class Ninja 
{ 
    public int Id { get; set; } 

    public Ninja BestFriend { get; set; } 
    //public Ninja Enemy { get; set; } 
} 

私のデータベースを更新しようとすると、これは1人の忍者メンバーとしか動作しません。私が複数の忍者の敵を含めると、私はエラーになります。 (これは溶液限り理由の説明を探してイム。)複数の子メンバーがある場合の関連付けの主な終点を特定できません

タイプ「NinjaDomain.Classes.Ninja」と「NinjaDomain.Classes.Ninja」との間の関連付けの主終了を決定することができません。 。この関連付けの主な終点は、流暢なAPIまたはデータアノテーションのどちらかの関係を使用して明示的に構成する必要があります。

+0

新しいテーブルが必要な場合や、 'modelBuilder'の関係を教えてください。どのフィールドが必須か、どちらがオプションかをフィールドに伝えます。 –

+0

Gottcha。実際には、これが解決策である理由についての説明を探しています。 – Lautaro

答えて

1

ただ、この方法を試してください。

public class Ninja 
{ 
    public int Id { get; set; } 

    public virtual Ninja BestFriend { get; set; } 
    public virtual Ninja Enemy { get; set; } 

    [InverseProperty("BestFriend")] 
    public virtual ICollection<Ninja> whoseBestFriend { get; set; } 
    [InverseProperty("Enemy")] 
    public virtual ICollection<Ninja> whoseEnemy { get; set; } 
} 

最終2つのプロパティがタイプ 'NinjaDomain.Classes.Ninja' と 'NinjaDomain.Classes.Ninja'間の関連性の主要終了を決定。 Ninjaのそれぞれは、彼が誰のためにEnemyであるかを知っていて、誰のために彼はBestFriendです。

+0

それはそうしました。ありがとう!しかし、私は質問があります。忍者タイプのクラスにメンバーが1人しかいない場合、BestFriendと言うとエラーなしでDBを更新できます。どうして?理解できません。 – Lautaro

+0

私は同意します、それはあなたが最初のクラスまたはいくつかの新しいクラスに3番目の 'Ninja'プロパティを追加しようとすると、' ICollection'がなくてもすべてがOKであることがわかります。それはバグかもしれませんか、それは私たちがEFについて知らないものです。 –

関連する問題