2

EF で多対多の関係を作成したいと考えています。通常は InverseProperty 属性を使用しますが、この場合は次のようになります。

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

私は逆の性質を持っていません。特権が複数のロールで使用される可能性があることを EF に伝える方法は?

[現在、EF は Role_Id 列を Privilege テーブルに配置しています。これは私が望むものではありません:-)]

編集: Fluent API を使用したくありません。属性を探しています。

4

1 に答える 1

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 が必要です。

于 2013-04-20T14:05:27.600 に答える