正如我提到的here,我改变了我的ASP.NET MVC 5应用程序的结构,如下所示:
class Post {
[Key]
public int Id {get;set;}
public DateTime CreationDate {get;set;}
[Required]
public virtual string Content {get;set;}
public virtual Thread RelatedThread {get;set;}
}
class Thread : Post {
public int ViewsCount {get;set;}
[NotMapped]
public override Thread RelatedThread {get;set;}
}
因为一个帖子包含一个帖子作为startpost,并且有一些额外的属性,比如视图。但是帖子的RelatedThread
属性会破坏我的数据结构,所以我想覆盖它并让EF使用NotMapped
属性忽略它(参见上面的代码)。
这不起作用,我收到以下错误(已翻译):
ignore-method不能用于模型'Thread'中的实体'RelatedThread',因为他继承了'Post',因为该属性已被分配。要从模型中排除属性,请对基本类型使用NotMapped属性或ignore-method。
我还试图在我的DbContext的OnModelCreating
方法中使用流畅的api排除属性:
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Thread>().Ignore(thread => thread.RelatedThread);
}
但没有任何改变,我再次得到同样的异常 - 虽然我使用了异常中推荐的两种方法。为什么这不起作用?