2013-04-20 50 views
2

我想在EF中創建多對多關係。通常我會使用InverseProperty屬性,但是,在這種情況下:多對多沒有反轉屬性

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

我沒有反轉屬性。如何告知EF可以在多個角色中使用特權?

[當前EF在Privilege表中放入Role_Id列。這不是我想要的:-)]

編輯:我不想使用Fluent API,我正在尋找一個屬性。

+1

權限(Id,Name,ICollection )? – 2013-04-20 13:56:35

+0

正如我所說,我不想在我的模型類中擁有逆向屬性。 – 2013-04-20 13:57:33

回答

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。

+0

嗯,那很糟糕。所以我有多個點,我已經定義了我的數據庫結構......所以只使用FluentAPI是「正常的」,並且根本沒有任何屬性? CodeFirst根本就沒有用過嗎? – 2013-04-20 14:14:23

+1

@ D.R .:是的,對於任何不僅僅是簡單的模型而言,由於數據註釋的侷限性,您通常最終會遇到Fluent API。我專門使用它。但這是一個品味問題。您可以很好地混合註釋(它們不太詳細,寫得更快)和Fluent API。 – Slauma 2013-04-20 14:23:38

+0

可惜,謝謝你的答案。你是否偶然知道他們是否打算在EF的未來更新中使註釋「相等」? – 2013-04-20 14:26:38

相關問題