对实体框架中的导航属性/引用感到困惑

时间:2010-08-18 07:34:17

标签: entity-framework

我正在尝试学习实体框架,我对导航属性感到困惑。我有一个名为tblUser的表。它有一个名为ManagerId的列,它具有UserId列的自引用外键。我已将此表添加到我的EF模型中,现在我的表实体属性中有三个“链接”:

tblUser1(类型:EntityCollection< tblUser>)
tblUser2(类型:tblUser)
tblUser2Reference(类型:EntityReference< tblUser>)

我对这些用途感到困惑。我想得到一个用户的经理名字,我应该使用哪一个以及如何使用?

1 个答案:

答案 0 :(得分:1)

EF默认为您的导航属性编号,因此可能会令人困惑。您可以在设计器中重命名属性:
tblUser1Users;
tblUser2Manager;
tblUser2ReferenceManagerReference

现在你可以得到这样的经理名字:

user.Manager.Name;

关于其他属性 - tblUser1(我们重命名为Users)是Manager导航属性的另一面。它将包含一个users的集合,其中包含当前manager。默认情况下它没有多元化,这使它更加令人困惑。如果在生成数据库时选择“ Pluralize或singularize generated object names ”,则宁愿生成类似Users1User1User1Reference的smth。

关于EntityReferencehttp://msdn.microsoft.com/en-us/library/bb297956.aspx

  

表示相关的结尾   多重关联   零或一。

     

EntityReference对象是   当导航属性返回时   相关的结尾具有多重性   零或一。