エンティティに対して子ID と親 ID が保存されMember
ていて、エンティティにナビゲーション プロパティが設定さMember
れてIsParent
いる場合 (Trey Gramann が指摘したように重複の 1 つを削除します)、目的の値にアクセスできるはずです (例:コントローラーで)次のように:
int childID = IsParent.Member.ParentID;
//Assuming your ParentID in the member entity is called `ParentID`
int parentID = IsParent.Member.ChildID;
//Assuming your ParentID in the member entity is called `ChildID`
おそらくそれで十分です。Member
ただし、何らかの理由でナビゲーション プロパティからこれらのプロパティにアクセスできるようにしたい場合は、読み続けてください。
とMember
の両方のナビゲーション プロパティを使用してエンティティを設定している場合は、次のようなものを使用して、通常のオブジェクト ドット表記を使用してとエンティティを取得できるはずです (ここでは、タイプが であると想定していますが、この設定は異なります):Child
Parent
Child
Parent
Person
Person child = IsParent.Member.Child;
Person parent = IsParent.Member.Parent;
これらをエンティティに対してキャッシュしたい場合は、IsParent
これを試すことができます:
public class IsParent
{
[Key]
public int PId { get; set; }
[DisplayName("ParentID")]
public int ParentID {
get {
return Member.ParentID;
};
set {
Member.ParentID = value;
};
}
[DisplayName("ChildID")]
public int ChildID {
get {
return Member.ChildID;
};
set {
Member.ChildID = value;
};
}
public virtual Member Member { get; set; }
}
から子エンティティと親エンティティに直接アクセスする場合は、同様のアプローチを使用できますIsParent
。
[DisplayName("Parent")]
public Person Parent {
get {
return Member.Parent;
};
set {
Member.Parent = value;
};
}
[DisplayName("Child")]
public Person Child {
get {
return Member.Child;
};
set {
Member.Child = value;
};
}
このアプローチにはいくつかの懸念があります-設定方法が確実に機能することを保証することはできません(過去にこのアプローチを使用したことがありますが、これはリポジトリの設定方法に依存し、予期しない動作につながる可能性があると思います) . また、Member エンティティで Child と Parent のナビゲーション プロパティを設定し、最初に示した方法でそれらにアクセスする方がよいと思います。
これで問題が解決すると思うので、このチュートリアルを読むことを強くお勧めしますか? -framework-data-model-for-an-asp-net-mvc-application .
これはエンティティ POCO ではなく、IsParent
単なる に名前を変更するParent
ことをお勧めします。IsParent
Boolean
Parent
最後のコメントとして、実際に/IsParent
エンティティを持つ理由はありますか? エンティティを適切なナビゲーション プロパティでセットアップしたらMember
、それを直接使用できるようです。そうしないと、不必要にラッパーを追加して混乱を招くだけです。