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!