数据库中没有定义外键。所以我建立了协会。
问题:似乎无法按预期引用Role表:
我可以获得u.UserNamesInRole然后无法跳转到角色表。
IEnumerable<fmwebapp1.Old_App_Code.TelerikUsersDataContext.User> userList = (from u in dbTelerik.Users
where u.UsersInRoles.Role.Name = "admin"
select u.UsersInRoles);
答案 0 :(得分:1)
where u.UsersInRoles.Role.Name = "admin"
这是不正确的语法。您需要==
。
答案 1 :(得分:0)
在多对多关系中,当我只想从一方获得结果,通过另一方的值过滤时,我通常会在关系中间开始查询:
获取角色的用户:
var users = from ur in context.UsersInRole
where ur.Role.Name == "admin"
select ur.User;
获取用户的角色:
var roles = from ur in context.UsersInRole
where ur.User.UserName == "Jon"
select ur.Role
答案 2 :(得分:0)
最简单的方法是在数据库中添加FK关系并重新导入表格。 EF将为您完成所有工作。
如果无法做到这一点,请尝试从Association
添加Role
到User
,然后将关联设置名称设置为UsersInRole
。从设计器中删除UsersInRole
实体。
您还可以比较从两个表之间导入“正确”FK关系生成的EDMX文件与EDMX中的内容,然后手动编辑XML以匹配。