我有一个数据库结构
users
--username
--ProfileId
--passwordhash
Profile
--Id
--name
Drives
--id
-- name
userDrives
--Id
--ProfileId
--DriveId
我希望获得当前登录用户的所有驱动器。我通常会编写一个存储过程来获得所需的结果。但是我试图首次使用linq(学习)并在多年致力于其他技术之后重新使用asp.net编程。
如果问题非常新鲜,请耐心等待
答案 0 :(得分:0)
如何为当前用户获取所有驱动器?
使用Entity Framework时,您可以向实体添加导航属性。导航属性表示实体之间的关系。在这里,您可以在云端硬盘和个人资料之间建立一对多的关系,您可以为您的实体添加导航属性,如下所示:
ICollection<Drive>
属性添加到Profile
实体。Profile
属性添加到Drive
实体。User
属性添加到Profile
实体。Profile
属性添加到User
实体。当您拥有用户的实例时,可以使用user.Profile.Drives
检索其驱动器(此处为驱动器为ICollection<Drive>
)。您还可以使用它向该用户添加新驱动器,不要忘记最后调用SaveChanges
。使用导航属性时,您应该注意EF能够为您的实体创建代理,否则它们将为null,因为EF不能对您的实例进行延迟加载。如果您想了解有关此主题的更多信息,请查找Entity Framework Proxies。
答案 1 :(得分:0)
你可以做类似的事情:
var result =(来自u中的用户在用户驱动中加入ud在u.ProfileId等于ud.ProfileId在驱动器中加入d在ud.DriveId中等于d.id其中u.username == loggedinUsername选择d).ToList();