2009-12-20 59 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