2009-11-29 4 views
0

Je cherche un moyen d'avoir un contrôle précis sur ce qui est sauvegardé en utilisant Entity Framework, plutôt que sur l'ensemble ObjectContext.SaveChanges(). Mon scénario est assez simple, et je suis assez étonné de ne pas avoir trouvé EF dans EF - assez basique dans NHibernate et tous les autres paradigmes d'accès aux données que j'ai vu. Je génère un tas de données (dans une interface utilisateur WPF) et permet à l'utilisateur d'affiner ce qui est proposé et de choisir ce qui est réellement engagé dans la base de données. Pour les entités proposées, je suis:Sauvegarder une seule entité au lieu du contexte entier - revisité

  1. obtenir un groupe d'entités de référence (par exemple les langues) via mon ObjectContext,
  2. créer les entités proposées et l'attribution de ces entités de référence à leur disposition (propriétés de navigation), donc par vertu de leur relation avec les entités de référence, ils sont implicitement ajoutés à l'objectconext
  3. Essayer de créer & enregistrer les entités individuelles en fonction des entités proposées.

je me dis que cela devrait être très simple & trivial, mais tout ce que j'ai essayé, je l'ai frappé un mur de briques, soit je mis en place une autre & ObjectContext juste ajouter l'entité que j'ai besoin (il essaie alors d'ajouter l'ensemble graphique et échoue car il est sur un autre objetcontext). J'ai essayé MergeOptions = NoTracking sur mes entités de référence pour essayer d'obtenir que Attach/AddObject ne navigue pas dans ceux-ci pour créer un graphique, sans résultat. J'ai supprimé les propriétés de navigation des entités de référence. J'ai essayé AcceptAllChanges, cela fonctionne mais assez inutile dans la pratique car je veux toujours suivre & enregistrer d'autres entités. Dans un test simple, je peux créer 2 de mes entités proposées, AddObject celui que je veux sauvegarder puis Détacher celui que je n'appelle pas alors SaveChanges, cela fonctionne mais encore une fois pas très bien en pratique. Voici quelques liens vers quelques-unes des astucieuses idées qui, au final, n'aident pas à la fin mais illustrent la complexité d'EF pour quelque chose d'aussi simple. Je suis vraiment à la recherche d'une méthode SaveSingle/SaveAtomic, et pense que c'est une demande assez simple pour n'importe quel DAL, laissez-moi un ORM de pointe.

  • Saving a single entity instead of the entire context
  • www.codeproject.com/KB/architecture/attachobjectgraph.aspx?fid=1534536 & df = 90 = 25 & MPP & bruit = 3 & sort = Position & view = rapide & select = 3071122 fr & = 1
  • bernhardelbl.spaces.live.com/blog/cns!DB54AE2C5D84DB78!238.entry

Répondre

1

Je vais ans wer moi-même - sofar je n'ai trouvé aucune solution pour EF1. EF4 vous permettra de mettre en œuvre cela avec des entités d'auto-suivi, à savoir. vous aurez besoin de rouler vos propres classes avec des templates T4 donc il y a un peu de courbe d'apprentissage (voir le lien à la fin). Pour l'instant, nous avons décidé de donner à nos objets objets des interfaces (ce qui me gêne car j'aime vraiment travailler avec des classes poco dans nhibernate/wcf qui en détruit le besoin) et d'implémenter des entites 'proposées' avec lesquelles nous travaillons jusqu'à ce que l'utilisateur décide de s'engager dans la base de données, à quel point nous mappons à un EntityObject.

Quelques réponses réelles ici:
http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/32b04a36-0579-4d6f-af48-9cb670a3d9ff

Questions connexes