多对多没有逆属性

时间:2013-04-20 13:51:41

标签: c# entity-framework entity-framework-6

我想在EF中创建多对多关系。通常我会使用InverseProperty属性,但在这种情况下:

Role ( Id, Name, ICollection<Privilege> )
Privilege ( Id, Name )

我没有反向属性。如何告诉EF可以在多个角色中使用权限?

[当前EF在Privilege表中放置Role_Id列。这不是我想要的:-)]

编辑:我不想使用Fluent API,我正在寻找一个属性。

1 个答案:

答案 0 :(得分:2)

modelBuilder.Entity<Role>()
    .HasMany(r => r.Privileges)
    .WithMany() // <- no parameter = no inverse property
    .Map(m =>
    {
        m.ToTable("RolePrivileges");
        m.MapLeftKey("RoleId");
        m.MapRightKey("PrivilegeId");
    });

我已经看到你不想要Fluent API,但数据注释是不可能的。带注释的映射选项只是使用Fluent API的选项的一个子集,这是缺少带有数据注释的映射选项的情况。你需要Fluent API。