LINQ to SQL - 没有外键

时间:2010-08-24 05:28:52

标签: c# linq-to-sql

数据库中没有定义外键。所以我建立了协会。

问题:似乎无法按预期引用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);

alt text

3 个答案:

答案 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添加RoleUser,然后将关联设置名称设置为UsersInRole。从设计器中删除UsersInRole实体。

您还可以比较从两个表之间导入“正确”FK关系生成的EDMX文件与EDMX中的内容,然后手动编辑XML以匹配。