首先使用EF 5逆向工程代码,为什么[Key]加上HasKey()?

时间:2012-10-17 12:55:36

标签: c# entity-framework-5

我首先使用 EF反向工程代码来获取我的POCO和映射表。 我得到了以下异常:EntityType'MYPOCO'没有定义键。定义此EntityType的键。 我在pk字段上添加了[Key]属性,它运行正常。但是:

为什么必须在poco PK属性

上设置[Key]属性
[Key] // what's the reason for this redundancy with HasKey() in mapping class ?
public int ID_MYPOCO { get; set; }

已在地图类中提及 ...

public class MYPOCOMap : EntityTypeConfiguration<MYPOCO>
{
    public MYPOCOMap()
    {
        // Primary Key
        this.HasKey(t => t.ID_MYPOCO);
    }
}

它正在工作,这没什么大不了但是想知道这种冗余是否有任何原因? 如何,非常满意EF逆向工程,我最喜欢的四种方式来映射数据库。

2 个答案:

答案 0 :(得分:2)

区别在于前者位于compile时间,后者位于run time

答案 1 :(得分:2)

虽然像[Key]这样的属性用于数据库生成,但它们也用于其他事情,例如验证,所以也需要定义。