实体框架 4.3.1 -> 5.0 异常:“实体类型未定义键。为此实体类型定义键。”

7
在 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; }
}

升级到EF 5.0后,当我尝试运行此应用程序并访问相关的DbContext时,出现以下异常:
EntityType 'AppUser' has no key defined. Define the key for this EntityType.

我该如何解决这个问题?这似乎是一个回归问题。

1个回答

3
这个异常是由混合使用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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接