我们正在构建一个包含多个实体的Context。所有实体都构建在具有ID(guid)的抽象类上。
我们希望所有实体都与公共Log表有关系,但是无法让EFCF理解由于命名而产生的关系。
public class Log {
public BaseEntity Entity {get;set;}
public Guid EntityID {get;set;}
}
public class Example : BaseEntity {
public virtual ICollection<Log> Logs {get;set;}
}
任何人都可以帮助支持哪种模式?我们已经尝试抽象,设置OnModelCreating等,但由于没有支持的命名而不断出现模糊错误。如果我们添加这些;
[ForeignKey("EntityID")]
public Example Example {get;set;}
[ForeignKey("EntityID")]
public Example5 Example5 {get;set;}
[ForeignKey("EntityID")]
public Example2 Example2 {get;set;}
Log类的一组属性,一切正常。添加新的日志条目时会出现问题。
答案 0 :(得分:0)
我想要一个可行且有效的解决方案,将公共字段抽象为基类。
在模型构建中使用MapInheritedProperties()(并遵循)
modelBuilder.Entity<Models.Example>().Map(x => x.MapInheritedProperties());
modelBuilder.Entity<Models.Log>()
.HasRequired(x => x.BaseEntity)
.WithMany(x => x.Logs)
.Map(x =>
{
x.ToTable("Example");
x.MapKey(new[] { "ID" });
})
.WillCascadeOnDelete(false);
我现在可以分配&#34;虚拟&#34;表到任何实体,只要它们派生自基类。