在实体框架中生成多对多

时间:2011-01-10 07:37:59

标签: entity-framework entity-framework-4 many-to-many poco

我已经生成了一个类似于以下内容的edm文件:

alt text

如何将其转换为多对多的edm?我将使用POCO,所以我希望它看起来像:

public class User{
    public List<Role> Roles {get; set;}
    /* Other prop here */
}

public class Role{
    public List<User> Users {get; set;}
    /* Other prop here */
}

使用EF4。

1 个答案:

答案 0 :(得分:1)

您可能/可能不知道的事情 - 如果您从 UserRole 表中删除 UserRoleId 字段,则EF根本不需要映射该连接表,并且它将为您创建多对多关联,并在幕后对连接表执行“静默连接”。

话虽如此,如果你必须拥有额外的字段,那么你可以这样做:

var userWithRoles = ctx.Users.Include("UserRoles.Role");

同样地:

var roleWithUsers = ctx.Roles.Include("UserRoles.User");

正如我所说,在大多数情况下,多对多,连接表中只需要FK。

如果可能,删除该字段,然后更新您的模型,多对多将“正常工作”。