如果孩子和家长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)和存储在其中的所有其他数据。请参阅下面的答案。 –