我有一个类似于下面代码的类设置。
public abstract class Record<T>
where T : class
{
[Key]
public long Id { get; set; }
public long MasterId { get; set; }
[ForeignKey("MasterId")]
public virtual T Master { get; set; }
[InverseProperty("Master")]
public virtual ICollection<T> Suggestions { get; set; }
}
这使我可以使用最少的样板代码创建如下所示的类,这些样板代码可以包含“建议” - 小的更改,然后在获得批准后合并。
public class Concrete : Record<Concrete>
{
public string Foo { get; set; }
}
在 EF5 中,这曾经完美地工作。但是,我现在在运行时收到以下错误消息:
导航属性 'Suggestions' 所指的实体类型 'Foo.Models.Concrete' 与类型 'Foo.Models.Record`1[[Foo.Models.Concrete, Foo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' 声明了反向导航属性 'Master'。
有什么办法可以解决这个问题,还是有更好的设计结构可以用来解决这个问题?