Entity Framework 来自数据库的 Code First 未添加 Key 属性

Entity Framework Code First from database not adding Key attribute

当首先从现有数据库生成代码 类 时,KeyAttribute 不会添加到 table 的主键 属性。

数据库中的所有 table 都有一个名为 Id 的 int PK 列,没有复合键

表单生成器和其他类通过内部逻辑反射使用此属性

我可以配置 Entity Framework 在重新生成模型时将 KeyAttribute 添加到主键属性吗 类?

我必须通过 MetadataType 属性手动注释所有关键属性并更改我的代码以支持元数据类型吗?

谢谢

不要将主键列命名为 'Id'

出于某种原因,当列名为 'Id' 时,现有数据库向导中的代码不会首先添加 Key 属性

这是使用 'Id' 列生成的代码:

[Table("tabla")]
public partial class tabla
{
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Id { get; set; }

这是将 'Id' 重命名为 'llave'

生成的代码
[Table("tabla")]
public partial class tabla
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int llave { get; set; }

这是正确的行为。请参阅下面 https://msdn.microsoft.com/en-us/data/gg193958.aspx 中的代码段。

One of the conventions that code first depends on is how it implies which property is the key in each of the code first classes. That convention is to look for a property named “Id”...

意思是,如果您将 pk 命名为 Id,它将推断 Id 就是 pk。