【问题标题】:Entity Framework v1 Modelling Many-to-Many Lookup Table RelationshipEntity Framework v1 建模多对多查找表关系
【发布时间】:2009-09-11 15:27:31
【问题描述】:

我有以下数据库表:

表 1:用户
UserId
用户名

表 2:角色
角色 ID
角色名称

表 3:UserRole
UserId
RoleId

一个用户可以有很多角色,一个角色可以有很多用户。 当我使用 EF 对此进行建模时,我得到一个带有 UserRole 实体列表的用户实体。我想要的是具有角色实体列表的用户。

有没有办法对此建模或通过 LINQ 查询以返回用户实体和它们所属的角色实体?

谢谢
德克

【问题讨论】:

    标签: entity-framework ado.net


    【解决方案1】:

    如果您为多对多关系建模,则中间的表格不会出现在您的概念模型中。 (即你不会有一个派生自“EntityObject”的类“UserRole”)

    如果您使用 EF 向导,请确保您的表“UserRole”只有这两个字段而没有其他字段。还要确保您已在两个字段上创建了外键约束。如果你有,那么向导将创建一个适当的多对多关系。

    查询可能看起来像

    using(MyObjectContext context = new MyObjectContext(someParameters)){
        var theUser = (from user in context.UserSet
                      where user.UserId = XY
                      select user).First();
        theUser.Roles.Load();
    }
    

    【讨论】:

    • 出于某种原因(呃!)我将审计列放在 UserRole 表中,所以它当然错误地建模了多对多关系。在我删除审计列后,它映射正确。感谢您的回答。
    • 您也可以在表上使用多对多关系,然后只包含 fk 字段(如果您的应用程序中不需要这些其他字段)。但要这样做,你必须深入挖掘edmx文件的xml代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    相关资源
    最近更新 更多