2014-03-04 70 views
0

我使用EF 6 Code-First,每種類型的表,並且我有兩個具體類GroupUserGroup有一個導航屬性Members其中包含User的集合。我已經映射使用流利的語法EF這許多一對多的關係:將DateTime字段添加到多對多EF代碼優先關係

modelBuilder.Entity<Group> 
    .HasMany<User>(g => g.Members) 
    .WithMany(u => u.Groups); 

我想能夠說成員已經加入了一個組,這樣我可以查詢,也就是說,最新成員。我不確定這是如何在框架內最好地完成的。

我看到如下選項:

  1. 創建和使用的審覈表(即由GroupUserGroupMembershipAudit,結合/分開,並DateTime
  2. 添加一列添加到自動生成許多-TO- UserGroup之間的很多表格

EF中有什麼東西可以促進這種多對多的歷史存儲像這樣/附加列到多對多的關係?

回答

1

一列添加到自動生成許多到許多用戶和 集團

之間的表是不可能的 - 自動生成接線表只能包含密鑰(也稱爲純連接表)。根據Working with Many-to-Many Data Relationships文章:如果連接表包含的字段不是鍵,則該表不是PJT,因此實體框架無法在表之間創建直接導航(多對多)關聯。 (加入與非鍵字段也是已知的表作爲連接用有效載荷的表。)

創建和使用一個審計表(即GroupMembershipAudit包括 組,用戶結合/分開和日期時間

其實你應該創建GroupMembershipAudit實體將生成的代碼第一個表,你不需要手動創建它

+1

感謝謝爾蓋 - 我不知道,如果有什麼神奇的烤成EF方便的歷史多對多的表,現在我知道沒有 –

相關問題