我如何得到所有的子记录在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编程。

如果问题很新,请谅解

我如何得到所有的子记录在mvc5使用linq

如何获取当前用户的所有驱动器?

当使用实体框架时,你可以为你的实体添加导航属性。导航属性表示实体之间的关系。在这里,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 ();