我如何确保一个幂等数据库插入实体框架5

本文关键字:数据库 插入 实体 框架 何确保 确保 一个 | 更新日期: 2023-09-27 18:04:06

我想确保我的数据库(SQL Server)更新是幂等的,类似于下面的博客文章的功能,但使用实体框架(v5, 数据库优先):

http://blogs.msdn.com/b/adonet/archive/2013/03/11/sql-database-connectivity-and-the-idempotency-issue.aspx

然而,如果我在插入过程中添加@Operation参数,我得到

"错误2037:映射函数绑定指定了一个函数…但不映射以下函数参数:操作"

(@Operation将是一个GUID,由应用程序生成,允许应用程序使用相同的GUID重试,如果它没有从进程获得成功响应。进程将GUID写入日志表,并且只在GUID不存在时执行插入-从而确保幂等事务。)

是否有一个优雅的解决方案?

我如何确保一个幂等数据库插入实体框架5

Entity Framework的6.1版将解决这个问题。(感谢EF团队-出色的工作。)

https://entityframework.codeplex.com/wikipage?title=Handling%20of%20Transaction%20Commit%20Failures%20

如果我正确理解了您的查询-如何在持有GUID的列上应用唯一约束,然后如果您在执行过程后没有获得成功响应,请重试插入。

在插入过程中可能使用try/catch甚至查询GUID值,而不是try/catch,如果存在,则处理异常或通过RETURN语句干净地退出该过程,并返回成功消息。

我认为你不需要在EF端做什么特别的事情。

最后一件事,可以将CRUD插入/更新语句包装在事务中,以确保值实际上是按照所提供的示例编写的。