Entity framework 向多对多EF代码优先关系添加DateTime字段

Entity framework 向多对多EF代码优先关系添加DateTime字段,entity-framework,ef-code-first,many-to-many,fluent,Entity Framework,Ef Code First,Many To Many,Fluent,我首先使用EF 6代码,每种类型一个表,我有两个具体的类Group和User组有一个导航属性成员,其中包含用户的集合。我使用流畅的语法在EF中映射了这种多对多关系: modelBuilder.Entity<Group> .HasMany<User>(g => g.Members) .WithMany(u => u.Groups); modelBuilder.Entity .HasMany(g=>g.Members) .有许多(u=>u组);

我首先使用EF 6代码,每种类型一个表,我有两个具体的类GroupUser<代码>组有一个导航属性
成员
,其中包含
用户
的集合。我使用流畅的语法在EF中映射了这种多对多关系:

modelBuilder.Entity<Group>
    .HasMany<User>(g => g.Members)
    .WithMany(u => u.Groups);
modelBuilder.Entity
.HasMany(g=>g.Members)
.有许多(u=>u组);
我希望能够说出一个成员何时加入了一个组,以便我可以查询(比如)最新的成员。我不确定如何在框架内最好地实现这一点

我看到以下选项:

  • 创建并使用审核表(即
    GroupMembershipAudit
    ,包括
    Group
    User
    、join/unjoin和
    DateTime
  • 用户
  • EF中是否有任何东西可以促进这种多对多历史信息的存储,如此/将列附加到多对多关系中

    在用户和用户之间自动生成的多对多表中添加列 团体

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

    创建并使用审核表(即GroupMembershipAudit),包括 组、用户、加入/取消加入和日期时间


    实际上,您应该创建
    GroupMembershipAudit
    实体。有了代码,将生成第一个表,您不需要手动创建它。

    谢谢Sergey-我不确定EF中是否有什么神奇的东西可以帮助实现多对多表的历史记录,现在我知道没有了