我如何得到所有的子记录在mvc5使用linq
本文关键字:记录 mvc5 使用 linq 何得 | 更新日期: 2023-09-27 18:17:54
我有一个数据库结构
users
--username
--ProfileId
--passwordhash
Profile
--Id
--name
Drives
--id
-- name
userDrives
--Id
--ProfileId
--DriveId
我正在寻找当前登录用户的所有驱动器。我通常会编写一个存储过程来获得想要的结果。但是我第一次尝试使用linq(学习),并在从事其他技术多年后重新进入asp.net编程。
如果问题很新,请谅解
如何获取当前用户的所有驱动器?
当使用实体框架时,你可以为你的实体添加导航属性。导航属性表示实体之间的关系。在这里,Drive和Profile之间有一对多的关系,您可以像这样向实体添加导航属性:
- 添加
ICollection<Drive>
属性到Profile
实体 - 添加
Profile
属性到Drive
实体 - 添加
User
属性到Profile
实体 - 添加
Profile
属性到User
实体
当你有一个用户的实例时,你可以使用user.Profile.Drives
来检索它的驱动器(这里的驱动器是ICollection<Drive>
)。您还可以使用它向该用户添加新驱动器,不要忘记在最后调用SaveChanges
。当使用导航属性时,您应该注意EF能够为您的实体创建代理,否则它们将为空,因为EF不能对您的实例进行延迟加载。如果你想了解更多关于这个主题的信息,你应该寻找实体框架代理。
你可以做类似的事情:
var result=(from u in user Join ud in userdrives On u. profileid = ud)ProfileId加入到驱动器中。如果u.username == loggedinUsername,则选择d).ToList ();