2010-04-27 4 views
2

Au début, j'utilisais cela comme une méthode d'extension pour mettre à jour mes entités indépendantes ...Comment mettre à jour les propriétés d'une entité non-scalaire dans 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 

Tout a été génial de travailler jusqu'à ce que je devais mettre à jour les propriétés non scalaires. Corrigez-moi si je me trompe, mais c'est parce que "ApplyCurrentValues" ne supporte que les scalaires. Pour contourner cela, je sauvegardais simplement le champ FK_ID au lieu de la relation d'objet entité. Maintenant, je suis confronté à une relation de plusieurs à plusieurs, donc ce n'est pas si simple. Je voudrais faire quelque chose comme ceci ...

Dim Resource = RelatedResource.GetByID(item.Value) 
Condition.RelatedResources.Add(Resource) 

Mais quand j'appelle SaveChanges les ressources ajoutées ne sont pas sauvegardées. J'ai commencé à jouer avec des entités auto-suivies (je ne sais pas si elles vont aider à résoudre mon problème) mais il semble qu'elles ne peuvent pas être sérialisées à ViewState et c'est une exigence pour moi.

Je suppose qu'une solution consisterait à ajouter la table xRef en tant qu'entité et à ajouter moi-même les fks, mais je préférerais que ça marche comme je le souhaite.

Je suis ouvert à toutes les suggestions sur la façon de sauvegarder mes nombreuses relations ou de sérialiser les entités d'auto-suivi (si l'auto-suivi pourrait même résoudre mon problème). Merci!

Répondre

Questions connexes