我首先使用 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逆向工程,我最喜欢的四种方式来映射数据库。
答案 0 :(得分:2)
区别在于前者位于compile
时间,后者位于run time
。
答案 1 :(得分:2)
虽然像[Key]这样的属性用于数据库生成,但它们也用于其他事情,例如验证,所以也需要定义。