保存更改后回滚

时间:2016-06-02 05:44:05

标签: c# asp.net asp.net-mvc

我有一个控制器和一个存储库。使用EF 6

控制器文件

int userID = _myrepository.addCustomer(model)

我获得了userID

然后使用第三方插件进行付款(例如:)

var success = makePaymentThroughPaymentProcessor(userID);

现在,如果付款未通过或发生错误,我想回滚更改,以便不添加任何客户而不添加到数据库。

我尝试过使用包装存储库方法

(var transaction = objMCOEntities.Database.BeginTransaction())
{
//code...
context.SaveChanges();
return userID;

我查看https://msdn.microsoft.com/en-us/data/dn456843.aspx

但我不确定如何在调用addCustomer存储库方法后引用该事务

我可以先付款,然后将客户添加到数据库中,但如果在将客户添加到数据库时发生错误,则不会创建客户,但会付款,然后我将不得不退还客户

1 个答案:

答案 0 :(得分:2)

如果您正在使用Entity Framework 6,则可以查看this页面。基本上你必须在tranaction.Commit()和transaction.Rollback();

之间做出选择。

但我不认为在这种情况下这是非常必要的。如果您的代码中有正确的顺序(首先通过第三方工具付款,然后保存到数据库),您就不需要进行交易,但我不知道该第三方工具的具体细节。