如果孩子和家長ID存儲對Member
實體,你有你的IsParent
實體(除去通過三分球GRAMANN指出副本之一)Member
的導航屬性設置,您應該能夠訪問你以後的值(例如在你的控制器中)如下所示:
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;
};
}
我有這種做法有些擔憂 - 我不能保證設置方法將可靠地工作(儘管過去我使用過這種方法,但我認爲這取決於您如何設置存儲庫,可能會導致意外的行爲)。我也認爲只需在成員實體上設置Child和Parent的導航屬性,然後按照我向您展示的第一種方式訪問它們,會更好。
我能否強烈建議您閱讀本教程,因爲我認爲這會爲您解決問題 - http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application。
可我也建議你重命名IsParent
只是Parent
,爲IsParent
意味着這是一個Boolean
而非實體POCO。
作爲最終評論,是否有理由確實擁有Parent
/IsParent
實體?看起來好像一旦你的Member
實體設置了適當的導航屬性,你可以直接使用它 - 否則你會不必要地添加一個包裝,這會增加你的困惑。
你的意思是有重複的屬性名稱? –
我想要做的是從成員表中獲取一個父Id和一個子Id。我可能做錯了,但想法是能夠將父母與他們的孩子聯繫在一起,這些孩子都在共同成員表中 – Diin
_想法是能夠將父母與他們的孩子聯繫在一起, 。它看起來像是試圖設置(或者已經在設置)導航屬性。看看這個教程 - http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp -net-MVC應用程序。一旦你完成了導航屬性的設置(例如對於孩子),你將能夠訪問它的主鍵(id)和存儲在其中的所有其他數據。請參閱下面的答案。 –