【问题标题】:DotNetOpenAuth - Database.DataContext.AddToUser(user) does not workDotNetOpenAuth - Database.DataContext.AddToUser(user) 不起作用
【发布时间】:2009-12-20 12:39:53
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    您的问题似乎自相矛盾,或者我读错了。听起来您说没有添加用户,但随后添加了一个用户。

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

    但是,这样做的副作用是,如果您正在通过“添加用户”方法进行调试,并且在看到 AddToUser 执行后,您会跳转到用户表以查看它是否已添加,它会赢'不在那里,因为尚未调用 SaveChanges 并且尚未提交事务。

    根据标准实体框架行为,必须调用 SaveChanges 才能将您的更改持久保存在数据库中,但正如我之前所说,RelyingPartyLogic 库会为您执行此调用。但有时您可能需要在自己的代码中自己调用 SaveChanges,以便(例如)获取新添加行的 ID。这甚至在提交之前在事务中也有效。

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      您是否忘记调用 DataContext.SaveChanges()?

      【讨论】:

      • 一般来说检查是好事,但对于项目模板来说不是必需的,因为它会在 HTTP 请求结束时自动为用户调用 SaveChanges。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-13
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多