Asp.net 实体框架4.1-选择多对多关联
我使用实体框架4.1和MVC 3。我的问题是关于实体框架中的联接表。 我创建了三个表Asp.net 实体框架4.1-选择多对多关联,asp.net,asp.net-mvc-3,entity-framework-4.1,Asp.net,Asp.net Mvc 3,Entity Framework 4.1,我使用实体框架4.1和MVC 3。我的问题是关于实体框架中的联接表。 我创建了三个表 用户-用户ID,用户名 角色-角色Id,Rolename UserInRoles-UserId,RoleId 我把这些桌子放到我的edmx文件里, 仅显示两个表,即两个表之间存在多对多关联的用户和角色 如果我想从UserInRoles表中获取用户的角色,方法是什么 我做了一些类似的事情 var result = (from ar in roles from a
var result = (from ar in roles
from au in users
where au.UserName == username
select new {});
这是行不通的。请帮助。我想它们应该链接到:
var result =
from au in users
where au.UserName == username
select au.Roles;
不确定默认情况下是否会给您一个空集合。可能必须手动获取角色集合。(可能是result.Fetch(),但我对它不太熟悉。)
(或者您是否需要访问存储在数据库中的实际UserInRole项?正如您所猜测的,实体框架确实将类似这样的简单查找表合并到父表中,以帮助您解决问题。您将无法访问代码中的查找表,但它将完成繁重的工作,并允许您像这样在表中导航
var result = (from ar in roles
where ar.Users.UserName == username
select ar);
或者如果您更喜欢lambdas(个人偏好):
var result=context.roles.Where(x=>x.Users.UserName==UserName)代码>当只有一个relationshiptable,其中一个共享primarykey是其他表的外键时,实体框架会自动在模型中生成多对多关系
您可以将另一列添加到此表以将其添加到模型中,也可以为关系生成另一个唯一键
请在此处阅读更多信息: