2014-03-04 46 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方便的历史多对多的表,现在我知道没有 –

相关问题