2010-04-27 34 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,但我寧願只是按照我的預期工作。

對於如何保存我的多對多關係或序列化自我跟蹤實體(如果自我跟蹤甚至能解決我的問題),我很樂意提供任何建議。謝謝!

回答