我正在将应用程序从 Entity Framework June 2011 CTP 迁移到 Entity Frameowrk 5 (.net 4.5)。我删除了 2011 年 6 月 CTP 的所有 EF 引用,并在 Visual Studio 2012 中添加了 EF 5 的引用。修复了一些命名空间错误后,应用程序编译正常。但是当我尝试运行应用程序并访问数据时出现异常。发生异常是因为我在基实体类中具有NotMapped 属性。以下是相关实体(基础和派生)。
基实体类
[Table("Users")]
[Serializable]
public abstract class User {
[Key]
public long Id { get; set; }
// Other Properties omitted
[NotMapped]
public string StringVersion {
}
}
派生实体类
[Table("Donors")]
[Serializable]
public class Donor : User {
...
}
当应用程序尝试访问数据时,会抛出 InvalidOperationException 并显示以下消息
You cannot use Ignore method on the property 'StringVersion' on type 'Donor' because
this type inherits from the type 'User' where this property is mapped. To exclude
this property from your model, use NotMappedAttribute or Ignore method on the base type.
我尝试根据http://entityframework.codeplex.com/workitem/481中描述的解决方法解决问题,但仍然抛出异常。具体来说,我使用了以下代码,以便在捐赠实体之前发现用户。
public class DonorContext : DbContext {
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
//Change for EF 5
modelBuilder.Entity<User>();
//
//Other Fluent API code follows
}
}
我该如何解决这种情况?