Я занимаюсь разработкой с использованием Entity Framework и WPF, и у меня возникают некоторые ошибки, и я не знаю, почему. При сохранении записи (используя BackgroundWorker
) я устанавливаю трекер изменения сущностей на ноль (ноль), присоединяю запись к новому одноразовому контексту, сохраняю ее, отсоединяю и удаляю контекст.
Сохранение записи о событиях и событиях в MainViewModel
программы, которые другие ViewModels
(включая сохраняющие) должны обновить, чтобы отразить свои сущности для отражения изменений.
Private Sub _saveRecordWorker_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles _saveRecordWorker.DoWork
Using MyContext As New RVShippingEntities
Dim MyShipment = CType(ShipmentRecord, IEntityWithChangeTracker)
MyShipment.SetChangeTracker(Nothing)
MyContext.Attach(MyShipment)
MyContext.Detach(ShipmentRecord)
End Using
End Sub
Фоновый рабочий Refresh похож, но у него есть блок Do While
, чтобы он не мешал рабочему сохранения (который, кажется, не работает; отсюда и сообщение). Когда я сохраняю (и он впоследствии обновляется), я получаю следующую ошибку:
Вызывающий поток не может получить доступ к этому объекту, поскольку он принадлежит другому потоку.
Я думал, что с блоком DoWhile
он будет ждать (и когда я перейду через него), пока не закончится поток сохранения, и все будет хорошо. Но может показаться, что что-то (основной поток или поток сохранения) все еще делает что-то, что мешает.
Есть ли лучший способ сделать это? Я делаю это глупо и глупо? Любая помощь будет оценена.
(Очевидно, Firefox распознал слово kludgey. Интересно)