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 开始,它现在应该可以正常工作了。
我有一个像这样的模型
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 开始,它现在应该可以正常工作了。