2010-11-15 7 views
2

J'essaie de reproduire plusieurs des pratiques que nous utilisons avec NHibernate dans EF CTP4.EF CTP4 quand appeler context.SaveChanges

Actuellement, nous avons une interface de dépôt générique (CTP4 rend vraiment cela assez facile avec DbContext.Set).

Nous passons dans le contexte et en utilisant StructureMap pour l'étendre par HttpRequest. Avec NHibernate, nous passons dans ISession (encore créé en utilisant StructureMap) mais utilisons un ActionFilter (UnitOfWork) pour valider la transaction à la fin de la requête.

Avons-nous des transactions équivalentes dans EF CTP4? Si ce n'est pas le cas, devrais-je utiliser le même filtre pour appeler context.SaveChanges() ou simplement le faire dans le référentiel. D'un autre côté, quelle est la manière la plus simple de tester si une entité est nouvelle ou non? Avec NH, nous avons le luxe de simplement appeler ISession.SaveOrUpdate. Notez que toutes mes entités utilisent un identifiant Guid. Peut-être une vérification par défaut (Guid)?

Merci.

+0

avez-vous compris? – Chad

+0

@Chad, j'ai fait quelque chose de similaire à la poste ci-dessous. L'inconvénient est que EF n'expose pas directement les transactions de sorte que vous perdez le contrôle que vous avez avec NH (par exemple explicitement annuler la transaction). En outre, ayant examiné en utilisant System.Transactions dans mon filtre, j'ai trouvé que ce n'était pas possible avec SQLCE. –

Répondre

1

Je sais que c'est une réponse tardive que vous aurez compris maintenant mais je suppose que c'est utile pour les gens qui cherchent. Rob conery a un excellent article sur l'utilisation de actionfilter et Ef pour créer des transactions par étendue de requête. méthode

Rob C Article

Oh et oui je créerais un UpdateInsert() sur un référentiel générique qui testent par défaut (Guid).

+0

nous avons fini par faire quelque chose de similaire et en appelant SaveChanges OnActionExecuted. –

+1

Pour info, le lien est rompu. –

Questions connexes