实体框架如果其他查询失败,如何还原已执行的查询

时间:2014-01-29 10:56:32

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

在我的网络应用程序中,当用户注册时,我必须将他的凭据存储在一个表中,将他的个人资料存储在另一个表中。

public long CreateUser(User user) {
  using(EF db = new EF()) {
    db.AddToUsers(user);
    db.SaveChanges();
    return user.UserId;
  }
}

public void CreateUserAuth(UserAuth userAuth) {
  using(EF db = new EF()) {
    db.AddToUserAuths(userAuth);
    db.SaveChanges();
  }
}

例如:当User1注册时,我在Users表中保存user1,city,country 并在UserAuths表中保存user1,密码,CreatedOn 在这种情况下,我的代码是

CreateUser(user);
CreateUserAuth(userAuth);  
...

如果CreateUserAuth由于某种原因失败,如何在CreateUser中恢复查询?
有没有办法在不进行大量结构改变的情况下实现这一目标?

我使用类似的功能创建了一个完整的网站。现在我意识到如果一个函数失败,就无法恢复已经执行的语句。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以使用事务来完成此任务。本文可能会帮助您理解交易 http://msdn.microsoft.com/en-us/library/vstudio/bb738523(v=vs.100).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1