我有一個WPF 4應用程序,其中通過自追蹤實體(STE 5)訪問我的數據。我有一個WPF內容控件,其數據上下文設置爲STE的模型類(供應商)。供應商類別的導航屬性爲vendor_accounts。我可以成功獲取這些供應商帳戶的集合,並將它們綁定到內容控件中的列表視圖。但是,當我嘗試將新的vendor_account對象添加到集合時,出現以下錯誤我不能使用導航屬性將項目添加到自追蹤實體集合
在CollectionChanged事件期間無法更改ObservableCollection。
這裏是我使用添加到ListView的集合簡化vb.NET代碼:
Private Sub AddAccountExecute()
Dim newAcc As New vendor_account With {.chrAccName = "New Account Name", .chrAccNumber = "New #"}
VendorSelection.vendor_account.Add(newAcc)
''FTC_Context is the object context for the STE data access model
FTC_Context.SaveChanges()
End Sub
此錯誤是在下面的子這是對生成的模板代碼拋出STE。上線會出現錯誤previousValue.vendor_account.Remove(ME):
Private Sub Fixupvendor(ByVal previousValue As vendor)
If IsDeserializing Then
Return
End If
If previousValue IsNot Nothing AndAlso previousValue.vendor_account.Contains(Me) Then
previousValue.vendor_account.Remove(Me)
End If
If vendor IsNot Nothing Then
vendor.vendor_account.Add(Me)
idVendor = vendor.idVendor
End If
If ChangeTracker.ChangeTrackingEnabled Then
If ChangeTracker.OriginalValues.ContainsKey("vendor") AndAlso
ChangeTracker.OriginalValues("vendor") Is vendor Then
ChangeTracker.OriginalValues.Remove("vendor")
Else
ChangeTracker.RecordOriginalValue("vendor", previousValue)
End If
If vendor IsNot Nothing AndAlso Not vendor.ChangeTracker.ChangeTrackingEnabled Then
vendor.StartTracking()
End If
End If
End Sub
我註釋掉線和項目可以成功添加到收藏account_vendor(這是不是一個可以接受的修復,因爲它修改每次更新我的STE模型時自動生成的代碼都會重新創建)。
所以我在FTC_Contect.SaveChanges()中添加了上面的代碼行,用於測試數據庫是否被更新。但是現在在保存更改行時出現以下錯誤:
違反了多重性約束。關係「FTC_devModel.FK_vendor_account_vendor」的角色「供應商」具有多重性 1或0..1。
我是STE新手,並且遇到麻煩。
所以,我的問題是,有人可以通過提供一個示例來說明如何使用「導航屬性」添加/刪除記錄或幫助我更正上面的代碼。
在此先感謝