我遇到了SubmitChanges失敗時撤消失敗的InsertOnSubmit的問題。下面的代碼:如何回滾失敗的InsertOnSubmit? (VB.NET LINQ)
Dim NewFac As New t_Facility With
{.FK_Instance_ID = guInstance_ID,
.FK_AccountType_ID = guAccountType_ID,
.FK_ATP_ID = guATP_ID,
.FK_Repayment_ID = guRepaymentType_ID,
.FK_InterestType_ID = guInterestType_ID,
.FK_FT_ID = guFacilitiesType_ID,
.NewRecord = bNewRecord,
.IndexNum = iIndexNum,
.SortCode = sSortCode,
.AccountNumber = sAccountNumber,
.Balance = decBalance,
.LastSanction = decLastSanctioned,
.Proposed = decProposed,
.Term_MTHs = iTerm_MTHS,
.Term_Expiry = dTerm_Expiry,
.InterestRate = decInterestRate,
.ArrangementFee = decArrangementFee,
.DateTime_From = Now(),
.ID = guFacilities_ID}
db.t_Facilities.InsertOnSubmit(NewFac)
Try
db.SubmitChanges()
Catch e As Exception
Console.WriteLine(e)
MessageBox.Show(e.Message & ". Please correct the field and try again", "ERROR", MessageBoxButton.OK, MessageBoxImage.Stop)
Exit Sub 'Takes the user back to the form to correct the value
End Try
當他們點擊再次提交,它回來四周,在同一點使用相同的值作爲最初提交忽略用戶輸入的新值失敗。
「NewFac」中的值是已更正的新值。我已經在調試手動檢查他們:「db.t_Facilities.InsertOnSubmit(NewFac)」
我假設我需要以某種方式刪除失敗的「NewFac」,其中包含不正確的值從「db.t_Facilities.InsertOnSubmit (NewFac)「在某種程度上被捕獲,但我沒有看到一種方法來做到這一點?
FYI:我這種方法的主要來自這裏:https://msdn.microsoft.com/en-us/library/bb763516
任何幫助,將不勝感激。
這工作,但它是更好的設計不重用不同的工作單位DataContexts。如果你忘記清理某些東西,你將會有各種難以診斷的錯誤。而且,這是內存泄漏,因爲所有加載的實體都保留在內存中。採用每個UOW創建一個上下文的架構。 – usr
我不知道是什麼意思,所以我不明白你的評論的最後一部分? 我有每個窗口DataContext和窗口中的所有字段綁定到DataContext。我對WPF和LINQ相當陌生,所以我可能抓住了棒的錯誤末端並運行它,但是我不知道我該怎麼做,因爲DataContext需要在Window打開時存在? –
工作單位= UOW。是的,每個窗口的上下文不好。與實體的數據綁定也不是那種可取的做法。微軟教程將用戶引導到這個方向,以簡化和哇的效果,但它不適合真正的應用程序。 – usr