我正在使用EF 6 Code-First,每种类型的表,我有两个具体的类Group
和User
。 Group
的导航属性Members
包含User
的集合。我使用Fluent语法在EF中映射了这种多对多关系:
modelBuilder.Entity<Group>
.HasMany<User>(g => g.Members)
.WithMany(u => u.Groups);
我希望能够在成员加入群组时说,以便我可以查询最新的成员。我不确定在框架内如何最好地完成这项工作。
我看到以下选项:
GroupMembershipAudit
,包括Group
,User
,加入/取消加入和DateTime
User
和Group
EF中是否有任何内容可以促进这种多对多历史信息的存储,例如/将列添加到多对多关系中?
答案 0 :(得分:1)
在User和之间的自动生成的多对多表中添加一列 组
这是不可能的 - 自动生成的联结表只能包含键(称为纯联接表)。根据{{3}}文章:如果连接表包含非键的字段,则该表不是PJT,因此实体框架无法在表之间创建直接导航(多对多)关联。 (连接具有非关键字段的表也称为带有效负载的连接表。)
创建并使用审计表(即由GroupMembershipAudit组成 组,用户,加入/取消加入和日期时间
实际上你应该创建GroupMembershipAudit
实体。使用Code First表将生成,您无需手动创建它。