2010-08-24 194 views
3

在数据库中没有定义外键。所以我建立了关联。LINQ to SQL - 没有外键

问题:似乎无法能够引用角色表预期:

我能得到尽可能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

回答

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 
+0

这正是我正在寻找的..干杯! – 2010-08-24 06:29:59

1
where u.UsersInRoles.Role.Name = "admin" 

这就是不正确的语法。您需要==

0

这将是最简单的添加在你的数据库的FK关系,并重新导入表。 EF将为您完成所有工作。

如果这不可行,请尝试将Role中的Association添加到User,然后将关联集名称设置为UsersInRole。从设计人员中删除UsersInRole实体。

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