用linq回滚到sql?

cho*_*bo2 2 .net c# asp.net linq-to-sql

我有这个

Public void CreateUser(params here)
{
   CreateMembership(params here);
   Users newUser = new Users();
   newUser.UserId = 123456
   Context.Users.insertOnSubmit();
   Context.Submit();
}

public void CreateMembership(...)
{
    Membership membership = new Membership();
     membership.Something = "something";
     Context.Membership.insertOnSumbit();
     Context.Submit();
}
Run Code Online (Sandbox Code Playgroud)

那么,如果Users表提交失败怎么办?如何将此回滚以删除会员资格?或者我可以设置我的东西不同,只需删除Membership方法中的Context.Submit()行?

然后只有一个提交被调用?或者我还需要做别的事吗?

Jir*_*ong 7

使用TransactionScope应该是我的建议.

using (TransactionScope ts = new TransactionScope())
{
    myContext.SubmitChanges();
    ts.Complete();
}
Run Code Online (Sandbox Code Playgroud)

如果从SubmitChanges()方法抛出任何异常,它将回滚.


lep*_*pie 5

IMO,你应该只拨打一次提交.

或者,我有一种方法可以"清除"挂起的更改.

看看这里.