如果子 ID 和父 ID 存储在实体中,并且您在实体中Member
设置了导航属性(删除 Trey Gramann 指出的重复项之一),您应该能够访问您所追求的值(例如在你的控制器中)像这样:Member
IsParent
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
但是,出于某种原因,您可能希望能够从导航属性访问这些属性- 如果是这样,请继续阅读。
如果你已经为你的实体设置了andMember
的导航属性,你应该能够使用类似下面的东西来使用常规对象点表示法获取and实体(这里我假设它们是 type ,但你可能有这设置不同):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 的导航属性,然后按照我向您展示的第一种方式访问它们。
我可以强烈建议您阅读本教程,因为我认为这将为您解决问题 - 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
为 just吗Parent
,因为IsParent
这意味着这是一个Boolean
POCO 而不是实体 POCO。
作为最后的评论,是否有理由实际拥有Parent
/IsParent
实体?似乎一旦您为Member
实体设置了适当的导航属性,您就可以直接使用它 - 否则您会不必要地添加一个包装器,这只会增加您的混乱。