1

我正在将 DotNetOpenAuth 合并到我的 asp.net 网站中。我是实体框架的新手。位于 LogingFrame.aspx.cs 中的 Database.DataContext.AddToUser(user) 不会将用户添加到数据库中。正确填写用户和 AuthenticationToken 记录。来自模板项目的相同代码,指向同一个数据库,工作正常。可能我在注册期间错过了一些东西。您能否指出我必须检查的内容?如果您需要提供任何代码,请告诉我。

4

2 回答 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 回答