【问题标题】:Many to many relation between 2 tables(Entity framework) [duplicate]2个表之间的多对多关系(实体框架)[重复]
【发布时间】:2016-01-29 19:18:31
【问题描述】:

我有一个 sql server 数据库和 C# kendo 网格。这些表是用户、角色、用户角色。 user 表有 userid 作为主键, Roles 表有 RoleId 作为主键。 User_Roles 有 roleid 和 user id 作为主键。当我尝试使用数据库中的选项更新将表添加到实体框架时,我可以看到用户和角色表,但看不到 User_Roles 表,因为是多对多关系。

问题是我想在 linq 查询中访问此表(User_roles)以在更新角色时更新用户。但我无法访问此表。有什么方法可以访问此表或添加到实体框架中。

数据显示在剑道网格上

谢谢

【问题讨论】:

    标签: c# entity-framework linq kendo-ui kendo-grid


    【解决方案1】:

    尝试使用每个用户实体的角色导航属性。

    例如(如果使用 LinqToEntities)

    context.Users.Select(x => x.Roles)
    

    【讨论】:

    • 不,当我选择它只显示 x.Roles 而不是 User_Roles 因为它不在实体中时,我没有看到该表
    • x.Roles 是用户的导航属性,代表用户的角色。如果您在 x.Roles 中添加或删除实体,该特定用户的角色将相应更新。
    • 因此,我可以使用将自动申请 User_Roles 的角色,而不是使用 User_Roles
    • 如果我正确理解您的设置。首先,您的上下文中应该有两个属性(context.Roles 和 context.Users),分别代表数据库中的用户和角色。此外,每个用户都应具有代表特定用户角色的角色导航属性 (user.Roles)。您可以从此导航属性中添加/删除,这将影响 User_Roles。 EF 永远不会显示关系表(例如 User_Roles),它表示为关系提示两端的导航属性(即用户或角色)。
    • 你是对的。我目前的情况是在一个网格上,我正在显示角色表中的角色列表。当我编辑一个角色时,它有几个选项卡。在一个选项卡上,它显示用户表中所有用户的列表以及一个自动生成的复选框,该复选框显示该用户是否具有该角色。所以我想要做的是我想将当前角色分配给其中一个用户并单击更新。所以需要调用的方法应该使用User_Roles表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 2011-12-17
    相关资源
    最近更新 更多