实体框架4& Code First CTP 5 - 缺少密钥

时间:2011-02-08 19:54:59

标签: entity-framework code-first ef-code-first

有人能理解这个错误吗?

在模型生成期间检测到一个或多个验证错误:

System.Data.Edm.EdmEntityType :: EntityType'Address'没有定义键。定义此EntityType的密钥。 System.Data.Edm.EdmEntitySet:EntityType:EntitySet地址基于没有定义键的地址类型。

我定义了这个实体:

public class Address
{
    [Key]
    public int ID;

    [Required]
    [MinLength(1)]
    [MaxLength(200)]
    public string Address1 { get; set; }

    [MinLength(1)]
    [MaxLength(200)]
    public string Address2 { get; set; }

    [Required]
    [MinLength(1)]
    [MaxLength(10)]
    public string Zip { get; set; }

    [MinLength(1)]
    [MaxLength(100)]
    public string Province { get; set; }

    public virtual US_State State { get; set; }

    [Required]
    public virtual Country Country { get; set; }
}

我的问题是:错误如何对具有Key属性数据注释的类以及其PK的传统ID名称有意义。

我认为这个类满足从中生成有意义实体所需的所有规则。

1 个答案:

答案 0 :(得分:8)

就像克雷格提到的那样,让ID属性可以解决你的问题。

public int ID { get; set; }

此外,您不需要[Key]上的ID属性,它将首先根据约定通过代码识别为对象标识符(即主键)。