Entity Framework - 如果数据库生成的标识不是实体的键,则在保存后不会填充它

Entity Framework - Database generated identity is not populated after save if it is not the key of the entity

我有一个像这样的模型

public class MyEntity
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Required]
    public int Id { get; set; } // Id

    [Required]
    [Key]
    public System.Guid GUID { get; set; }
}

GUID 属性 是设计的 PK,但我有一个数据库生成的 ID 属性,我在我的代码中使用它来确定该对象是否是一个新对象保存了。

当我用 Entity Framework 保存此对象时,Id 属性 不会像数据库生成的属性一样正常返回填充(尽管通常这些是键)。我必须在数据库中查询对象并手动获取 ID。似乎 EF 仅返回填充 SaveChanges 上的关键属性。

有什么方法可以让 EF 在此处自动填充 Id 属性?将它设置为键不是一个选项,我有很多表 FK'd 到 GUID 属性 并且有充分的理由。

编辑:我发现包 https://entityframework-extensions.net/ 正在处理我的保存更改。如果我使用标准的 EF savechanges 它可以工作,但不适用于扩展版本。

免责声明:我是Entity Framework Extensions

的所有者

这确实是我们图书馆的一个问题。 EF6 尚不支持此方案。

但是,从 v4.0.50 开始,它现在应该可以正常工作了。