我有一个 WPF 4 应用程序,通过自我跟踪实体(STE 5)访问我的数据。我有一个 WPF 内容控件,其数据上下文设置为 STE 的模型类 ( vendor )。供应商类具有vendor_accounts的导航属性。我可以成功获取这些供应商帐户的集合并将它们绑定到内容控件中的列表视图。但是,当我尝试将新的 vendor_account 对象添加到集合时,我收到以下错误
在 CollectionChanged 事件期间无法更改 ObservableCollection。
这是我用来添加到列表视图集合中的简化 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 的新手,遇到了麻烦。
所以,我的问题是,有人可以通过提供如何使用“导航属性”添加/删除记录的示例来帮助我,或者帮助我更正上面的代码。
提前致谢