entity-framework - 实体框架 - 如果它不是实体的键,则保存后不会填充数据库生成的标识
问题描述
我有一个模型
public class MyEntity
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Required]
public int Id { get; set; } // Id
[Required]
[Key]
public System.Guid GUID { get; set; }
}
GUID 属性是设计上的 PK,但我有一个 db 生成的 Id 属性,我在代码中使用它来确定对象是否是尚未保存的新对象。
当我使用 Entity Framework 保存此对象时,Id 属性不会像数据库生成的属性通常发生的那样重新填充(尽管通常这些是键)。我必须在数据库中查询对象并手动获取 ID。似乎 EF 只返回填充 SaveChanges 上的 Key 属性。
有什么方法可以让 EF 在这里自动填充 Id 属性?将其设置为键不是一个选项,我有几十个表是对 GUID 属性进行 FK 的,这是有充分理由的。
编辑:我发现包https://entityframework-extensions.net/正在处理我的保存更改。如果我使用标准的 EF savechanges 它可以工作,但不能使用扩展版本。
解决方案
推荐阅读
- iis-7 - 如何识别 SCHANNEL 错误的应用程序来源?
- python - 从具有分类值的熊猫系列中获取总和
- powerbi - Power BI 视觉对象 - 按组中的最小变量值选择行
- firebase - Firestore Firebase 数据库规则,允许管理员编写
- javascript - Bot 发送嵌入消息但不发送 mp4 附件
- c# - graphql-dotnet/graphql-dotnet/ 和 graphql-dotnet/server/ 有什么区别
- generics - 无法从 rust 中的“T”中减去“T”
- python - 在序列化程序中获取父模型数据的最佳方法是什么?
- mysql - 我的 SQL 在 where 子句中仅按月份限制搜索
- angular - apache上的角度路由返回内部服务器错误