C# 如何使用linq获取mvc5中的所有子记录

C# 如何使用linq获取mvc5中的所有子记录,c#,entity-framework,C#,Entity Framework,我有一个数据库结构 users --username --ProfileId --passwordhash Profile --Id --name Drives --id -- name userDrives --Id --ProfileId --DriveId 我希望获得当前登录用户的所有驱动器。我通常会编写一个存储过程来获得所需的结果。但是,在多年从事其他技术的工作之后,我正在尝试第一次使用linq学习并重新开始asp.net编程 如果这个问题很新,请耐心等待如何

我有一个数据库结构

users
 --username
 --ProfileId
 --passwordhash

Profile
 --Id
 --name

Drives
 --id
 -- name

userDrives
 --Id
 --ProfileId
 --DriveId
我希望获得当前登录用户的所有驱动器。我通常会编写一个存储过程来获得所需的结果。但是,在多年从事其他技术的工作之后,我正在尝试第一次使用linq学习并重新开始asp.net编程

如果这个问题很新,请耐心等待

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

使用实体框架时,可以向实体添加导航属性。导航属性表示实体之间的关系。在这里,驱动器和配置文件之间存在一对多关系,您可以向实体添加导航属性,如下所示:

将ICollection属性添加到纵断面图元。 将配置文件属性添加到驱动器实体。 将用户属性添加到配置文件实体。 将配置文件属性添加到用户实体。
当您有一个用户实例时,可以使用user.Profile.Drives检索其驱动器,此处驱动器是ICollection。您还可以使用它向该用户添加新驱动器,不要忘记在最后调用SaveChanges。当使用导航属性时,您应该注意EF能够为您的实体创建代理,否则它们将为null,因为EF不能在您的实例上进行延迟加载。如果您想了解有关此主题的更多信息,请查找。

您可以执行以下类似操作:


var result=from u in user Join ud in userdrives On u.ProfileId等于ud.ProfileId Join d in drives On ud.DriveId等于d.id,其中u.username==loggedinUsername选择d.ToList

数据库访问与您正在处理的web项目类型无关,甚至与它是否是web项目无关。当你说linq时,你是指linq到SQL吗?它几乎被弃用,取而代之的是实体框架。对不起,我的问题还不够清楚。我使用的是实体框架6。我只是尝试使用联接表来获取当前用户的所有驱动器记录。我不想走正常的存储过程路线,因为有人告诉我从C查询更好。如果我错了,请纠正我谢谢agarwaen。。我明白了。。如何编写查询。在我的例子中,我有一个用户实体,它链接到profile实体,profile链接到userDrive,而userDrive又链接到drive@Prady对不起,我没有意识到用户和配置文件是不同的实体。看看更新后的答案,这是你想要的吗?