2010-04-27 2 views
2

Сначала я использовал это как метод расширения для обновления моих отдельных объектов ...Как обновить свойства нескалярных объектов в 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, но я бы предпочел, чтобы он просто работал так, как я ожидаю.

Я открыт для любых предложений о том, как сэкономить много или на многие отношения или сериализовать объекты самоконтроля (если самоконтроль может даже решить мою проблему). Благодаря!

ответ

Смежные вопросы