繁体   English   中英

实体框架4.3.1 - > 5.0异常:“EntityType没有定义键。 定义此EntityType的键。“

[英]Entity Framework 4.3.1 -> 5.0 Exception: “EntityType has no key defined. Define the key for this EntityType.”

在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.

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

此异常是由EF版本混合引起的。

BaseUser是在使用EF 4.3.1的共享项目中定义的。 AppUser在使用EF 5.0的项目中。 这种令人困惑的异常是尝试从尚未升级到EF 5.0的项目中的模型继承的结果。 拆分共享项目并升级此处引用的项目解决了该问题。

如果其他人碰到这一点,值得指出升级有点尴尬。 由于NuGet似乎没有注意到升级的需要,它允许您在其上安装EF 5.0,在安装后将新版本列为4.4,并要求您在Model类中包含以下两个using语句一些EF数据注释被移动(重定向),有些则不是:

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM