2009-12-20 43 views
1

我结合DotNetOpenAuth到我的asp.net网站。我是Entity框架的新成员。 Database.DataContext.AddToUser(用户)位于LogingFrame.aspx.cs用户不添加到数据库中。用户和AuthenticationToken记录填写正确。模板项目中指向相同数据库的相同代码工作正常。在组建期间可能我错过了一些东西。请问我要检查什么,请问 ?如果您需要提供任何代码,请告诉我。DotNetOpenAuth - Database.DataContext.AddToUser(用户)不工作

回答

1

...用户不添加到数据库中。用户和AuthenticationToken记录填写正确。

您的问题似乎与本身矛盾,或者我读错了。这听起来像你说没有用户被添加,但随后添加了一个用户。

让我来刺它虽然让你知道这个项目模板是如何工作的。数据库事务包装单个HTTP请求中的所有数据库更改。它被构建到RelyingPartyLogic程序集中以具有此行为。此外,在一个成功的HTTP请求结束(一个未导致未处理的异常)的SaveChanges()被调用,事务被提交。如果抛出未处理的异常,则更改和事务将回滚。这有助于保护数据库的完整性。

这样做的副作用是,但是,如果你通过调试“添加用户”的方法后,你看到AddToUser执行跳转到用户表,看是否加入它,它赢得了”不存在,因为SaveChanges尚未被调用并且事务尚未提交。

根据标准实体框架行为,必须调用SaveChanges以使您的更改持久保存在数据库中,但正如前面所述,RelyingPartyLogic库会为您调用此调用。但是,您有时可能需要自己调用SaveChanges,以便(例如)获取新添加的行的ID。即使在提交之前,它也可以在事务中使用。

希望有所帮助。

0

你忘记调用DataContext.SaveChanges()?

+0

通常需要检查的好东西,但对于项目模板不是必须的,因为它在HTTP请求结束时自动为用户调用SaveChanges。 – 2009-12-20 21:45:53