代码之家  ›  专栏  ›  技术社区  ›  Dave Mateer

LINQ到SQL-没有外键

  •  3
  • Dave Mateer  · 技术社区  · 14 年前

    数据库中未定义外键。所以我设置了关联。

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

    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 回复  |  直到 14 年前
        1
  •  0
  •   kbrimington    14 年前

    在多对多关系中,当我只需要一方的结果,并按另一方的值进行过滤时,我通常在关系的中间开始查询:

    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
  •  1
  •   leppie    14 年前
    where u.UsersInRoles.Role.Name = "admin"
    

    ==

        3
  •  0
  •   Ian Mercer    14 年前

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

    如果不可能,请尝试添加 Association Role User 然后将关联集名称设置为 UsersInRole . 删除 用户角色 来自设计器的实体。

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