Chr*_*ini 7 c# key entity-framework-5 entity-framework-4.3.1
在Entity Framework 4.3.1中,我有以下模型,它们工作正常:
public class BaseUser
{
[Key]
[MaxLength(100)]
public string Username { get; set; }
}
[Table("AppUser")] // Ensures EF Code First uses Table-per-Type
public class AppUser : BaseUser
{
[MaxLength(200)]
public string About { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
升级到EF 5.0后,当我尝试运行此应用程序并访问关联的DbContext时,我收到以下异常:
EntityType 'AppUser' has no key defined. Define the key for this EntityType.
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?这似乎是一种回归.
此异常是由于混合 EF 版本引起的。
BaseUser 是在使用 EF 4.3.1 的共享项目中定义的。AppUser 正在使用 EF 5.0 的项目中。这个令人困惑的异常是尝试从尚未升级到 EF 5.0 的项目中的模型继承的结果。拆分共享项目并升级此处引用的项目解决了该问题。
如果其他人遇到这种情况,值得指出的是升级有点尴尬。由于 NuGet 似乎没有注意到升级的需要,因此它允许您在其之上安装 EF 5.0,在安装后将新版本列为 4.4,并要求您在模型类中包含以下两个 using 语句,因为一些 EF 数据注释被移动(重定向),一些则没有:
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
Run Code Online (Sandbox Code Playgroud)