EF7(コア)内の同じテーブルに対して複数のリレーションシップを作成するにはどうすればよいですか?

c# entity-framework-core

質問

私は移行を構築しようとしていますが、それは次のクラスを抱えています:

public class Unit
{
    public int UnitID { get; set; }
    ...
    public Nullable<int> PreviousUnitID { get; set; }

    [ForeignKey("PreviousUnitID")]
    public Unit PreviousUnit { get; set; }

    public Nullable<int> SubsequentUnitID { get; set; }

    [ForeignKey("SubsequentUnitID")]
    public Unit SubsequentUnit { get; set; }
}

エンティティタイプ 'Unit'に同じ名前のナビゲーションプロパティが既に存在するため、 "ナビゲーションプロパティ ''をエンティティタイプ 'Unit'に追加することはできません。

私は、このわずかに特異なナビゲーションが責任を負うと仮定しているので、残りのクラスは除外しています。私はこの問題を回避する方法を知っていますか?

ありがとう!

受け入れられた回答

これはRC1の既知の問題です。

問題:

開発チェーン: https : //github.com/aspnet/EntityFramework/pull/4239

rowanmillerは1月8日にコメントしました

それは#4069で、私たちの夜間ビルドで修正され、RC2で出荷されます。


人気のある回答

virtualキーワードを使用してください:

public virtual Unit PreviousUnit { get; set; }
public virtual Unit SubsequentUnit { get; set; }

完全なコード:

public class Unit
{
public int UnitID { get; set; }
...
public Nullable<int> PreviousUnitID { get; set; }

[ForeignKey("PreviousUnitID")]
public virtual Unit PreviousUnit { get; set; }

public Nullable<int> SubsequentUnitID { get; set; }

[ForeignKey("SubsequentUnitID")]
public virtual Unit SubsequentUnit { get; set; }
}

これにより、ユニットの遅延ロードも可能になります。

編集:おそらくこれも役立つ可能性があります: https : //github.com/aspnet/EntityFramework/issues/3911



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ