【发布时间】:2014-02-19 10:57:35
【问题描述】:
我的应用程序中的一些实体有 4 个审计属性:
public virtual DateTime WhenAdded { get; set; }
public virtual DateTime? WhenUpdated { get; set; }
public virtual User AddedBy { get; set; }
public virtual User UpdatedBy { get; set; }
我正在使用代码优先的方法,并使用以下扩展方法来映射用户属性:
public static void MapAuditFields<T>(this EntityTypeConfiguration<T> configuration) where T : class, IAuditable
{
configuration.HasOptional<User>(e => e.AddedBy)
.WithOptionalDependent()
.Map(a => a.MapKey("AddedByUserId"));
configuration.HasOptional<User>(e => e.UpdatedBy)
.WithOptionalDependent()
.Map(a => a.MapKey("UpdatedByUserId"));
}
这在大多数情况下都可以正常工作,但在 User 类上却不行,它当然与自身具有递归关系。我在互联网上看到过各种帖子,表明当您尝试在这种情况下自定义连接表列名称时,实体框架存在错误,例如:
Self-referencing many-to-many recursive relationship code first Entity Framework
和
我得到的错误是“序列包含多个匹配元素”。
有谁知道实体框架 6 中是否已修复此问题?
非常感谢。
【问题讨论】:
标签: c# .net entity-framework ef-code-first entity-framework-6