将DateTime字段添加到多对多EF Code First关系

时间:2014-03-04 06:18:01

标签: entity-framework ef-code-first many-to-many fluent

我正在使用EF 6 Code-First,每种类型的表,我有两个具体的类GroupUserGroup的导航属性Members包含User的集合。我使用Fluent语法在EF中映射了这种多对多关系:

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

我希望能够在成员加入群组时说,以便我可以查询最新的成员。我不确定在框架内如何最好地完成这项工作。

我看到以下选项:

  1. 创建并使用审核表(即GroupMembershipAudit,包括GroupUser,加入/取消加入和DateTime
  2. UserGroup
  3. 之间的自动生成的多对多表格中添加一列

    EF中是否有任何内容可以促进这种多对多历史信息的存储,例如/将列添加到多对多关系中?

1 个答案:

答案 0 :(得分:1)

  

在User和之间的自动生成的多对多表中添加一列   组

这是不可能的 - 自动生成的联结表只能包含键(称为纯联接表)。根据{{​​3}}文章:如果连接表包含非键的字段,则该表不是PJT,因此实体框架无法在表之间创建直接导航(多对多)关联。 (连接具有非关键字段的表也称为带有效负载的连接表。)

  

创建并使用审计表(即由GroupMembershipAudit组成   组,用户,加入/取消加入和日期时间

实际上你应该创建GroupMembershipAudit实体。使用Code First表将生成,您无需手动创建它。