我正在开发使用VS 2010和EF 4.3的ASP.NET MVC 4应用程序。它从外部数据库检索一些数据,并且都按预期工作,直到我试图重新编译一天。汇编之后,我收到以下EF错误:
Invalid column name ‘CreatedOn’. @H_404_4@
没有DB或代码更改 – 我只是添加了一些缩进的可读性。 TFS以前的应用程序版本也抛出相同的异常。@H_404_4@
我的实体中没有CreatedOn属性,在数据库中没有这样的字段,我不需要它,并且不希望它在任何情况下。@H_404_4@
应该做什么来避免这个例外?@H_404_4@
public class MyContext<T> : DbContext where T : class,IDataEntity { public MyContext(string connectionKey) : base("name=" + connectionKey) { Configuration.AutoDetectChangesEnabled = false; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Label>().Property(item => item.Id).HasColumnName("LabelId"); modelBuilder.Entity<Label>().Ignore(item => item.ChangedBy); } }
这是Label类@H_404_4@
public class BaseEntity : IDataEntity { public int Id { get; set; } public string Name { get; set; } public string ChangedBy { get; set; } } public class Label : BaseEntity { }
解决方法
在我的情况下,这是MiniProfiler。我使用EF 5.0,它使用EF 4.x.禁用分析器后,异常不再被抛出