我正在将 DotNetOpenAuth 合并到我的 asp.net 网站中。我是实体框架的新手。位于 LogingFrame.aspx.cs 中的 Database.DataContext.AddToUser(user) 不会将用户添加到数据库中。正确填写用户和 AuthenticationToken 记录。来自模板项目的相同代码,指向同一个数据库,工作正常。可能我在注册期间错过了一些东西。您能否指出我必须检查的内容?如果您需要提供任何代码,请告诉我。
问问题
590 次
2 回答
1
...不会将用户添加到数据库中。正确填写用户和 AuthenticationToken 记录。
您的问题似乎自相矛盾,或者我读错了。听起来您说没有添加用户,但随后添加了一个用户。
让我试一试,让你知道这个项目模板是如何工作的。数据库事务将所有数据库更改包装在单个 HTTP 请求中。它内置在 RelyingPartyLogic 程序集中以具有此行为。此外,在成功的 HTTP 请求(未导致未处理的异常)结束时,调用 SaveChanges() 并提交事务。如果抛出未处理的异常,则更改和事务将回滚。这有助于保护数据库的完整性。
但是,这样做的副作用是,如果您正在通过“添加用户”方法进行调试,并且在看到AddToUser
执行后跳转到用户表以查看它是否已添加,则它不会存在,因为 SaveChanges尚未调用,事务尚未提交。
根据标准实体框架行为,必须调用 SaveChanges 才能将更改持久保存在数据库中,但正如我之前所说,RelyingPartyLogic 库会为您进行此调用。但有时您可能需要在自己的代码中自己调用 SaveChanges,以便(例如)获取新添加行的 ID。这甚至在提交之前在事务中也有效。
希望有帮助。
于 2009-12-20T21:45:13.990 回答
0
您是否忘记调用 DataContext.SaveChanges()?
于 2009-12-20T18:18:27.820 回答