我有一个 Controller 和一个存储库。使用 EF 6
Controller 文件
int userID = _myrepository.addCustomer(model)
获取用户ID
然后使用第三方插件进行支付(例如:)
var success = makePaymentThroughPaymentProcessor(userID);
现在,如果付款没有通过或发生错误,我想回滚更改,这样就不会将客户添加到数据库中。
我尝试使用包装存储库方法
(var transaction = objMCOEntities.Database.BeginTransaction())
{
//code...
context.SaveChanges();
return userID;
我查看https://msdn.microsoft.com/en-us/data/dn456843.aspx
但我不确定在调用 addCustomer 存储库方法后如何引用事务
我可以先付款,然后再将客户添加到数据库,但如果在将客户添加到数据库时发生错误,则不会创建客户,但会进行付款,然后我将不得不退还客户
最佳答案
如果您使用的是 Entity Framework 6,则可以查看 this 页面。基本上你必须在 tranaction.Commit() 和 transaction.Rollback() 之间做出选择;
但我认为在这种情况下这真的没有必要。如果您的代码中有正确的顺序(首先通过第三方工具付款,然后保存到数据库),您并不完全需要交易,但我不知道这个第三方工具的细节。
关于c# - 保存更改后回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37583558/