Сначала я использовал это как метод расширения для обновления моих отдельных объектов ...Как обновить свойства нескалярных объектов в EF 4.0?
Public Sub AttachUpdated(ByVal obj As ObjectContext, ByVal objectDetached As EntityObject)
If objectDetached.EntityState = EntityState.Detached Then
Dim original As Object = Nothing
If obj.TryGetObjectByKey(objectDetached.EntityKey, original) Then
obj.ApplyCurrentValues(objectDetached.EntityKey.EntitySetName, objectDetached)
Else
Throw New ObjectNotFoundException()
End If
End If
End Sub
Все работает замечательно, пока я не должен был обновить нескалярное свойство. Исправьте меня, если я ошибаюсь, но это потому, что «ApplyCurrentValues» поддерживает только скаляры. Чтобы обойти это, я просто сохранил поле FK_ID вместо отношения объекта объекта. Теперь я столкнулся со многими и многими отношениями, поэтому это не так просто. Я хотел бы сделать что-то вроде этого ...
Dim Resource = RelatedResource.GetByID(item.Value)
Condition.RelatedResources.Add(Resource)
Но когда я вызываю SaveChanges, добавленные Ресурсы не сохраняются. Я начал играть с объектами самоконтроля (не уверен, что они помогут решить мою проблему), но, похоже, они не могут быть сериализованы для ViewState, и это требование для меня.
Я предполагаю, что одним из решений было бы добавить таблицу xRef в качестве объекта и добавить сам fks, но я бы предпочел, чтобы он просто работал так, как я ожидаю.
Я открыт для любых предложений о том, как сэкономить много или на многие отношения или сериализовать объекты самоконтроля (если самоконтроль может даже решить мою проблему). Благодаря!