1

我首先使用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 逆向工程非常满意,这是我最喜欢的四种映射数据库的方式。

4

2 回答 2

2

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

于 2012-10-17T12:59:54.313 回答
2

虽然 [Key] 之类的属性用于 DB 生成,但它们也用于其他事情,例如验证,因此也需要定义。

于 2012-10-17T13:02:10.100 回答