我正在尝试学习实体框架,我对导航属性感到困惑。我有一个名为tblUser的表。它有一个名为ManagerId的列,它具有UserId列的自引用外键。我已将此表添加到我的EF模型中,现在我的表实体属性中有三个“链接”:
tblUser1(类型:EntityCollection< tblUser>)
tblUser2(类型:tblUser)
tblUser2Reference(类型:EntityReference< tblUser>)
我对这些用途感到困惑。我想得到一个用户的经理名字,我应该使用哪一个以及如何使用?
答案 0 :(得分:1)
EF默认为您的导航属性编号,因此可能会令人困惑。您可以在设计器中重命名属性:
tblUser1
至Users
;
tblUser2
至Manager
;
tblUser2Reference
至ManagerReference
。
现在你可以得到这样的经理名字:
user.Manager.Name;
关于其他属性 - tblUser1
(我们重命名为Users
)是Manager
导航属性的另一面。它将包含一个users
的集合,其中包含当前manager
。默认情况下它没有多元化,这使它更加令人困惑。如果在生成数据库时选择“ Pluralize或singularize generated object names ”,则宁愿生成类似Users1
,User1
和User1Reference
的smth。
关于EntityReference
:http://msdn.microsoft.com/en-us/library/bb297956.aspx
表示相关的结尾 多重关联 零或一。
EntityReference对象是 当导航属性返回时 相关的结尾具有多重性 零或一。