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