2010-09-10 4 views
9

Ok, je renonce à ...EF DbContext et StructureMap portée

Ce que je veux partager DbContext l'instance du EF4 par demande. Je configuré StructureMap comme ceci:

For<MyContext>().Use(new MyContext("LocalhostConnString")); 

Mais quand je rafraîchir mon site, ou même l'ouvrir dans un autre navigateur, je reçois le même instance exacte de MyContext. Pourquoi cela est-il partagé entre les demandes?

Ai-je raté quelque chose?

Répondre

13

Oui ... environ 4 caractères. Essayez:

For<MyContext>().Use(() => new MyContext("LocalhostConnString")); 

Si vous donnez une instance d'objet StructureMap, il traitera ce cas comme un singleton et retourner le même à chaque fois. Si à la place vous lui donnez un lambda qui crée une instance, il lancera ce lambda chaque fois que le type sera demandé.

+1

Pas moyen ... c'était tout, ça marche! Merde, merci :) – Darmak

+1

Donc, "chaque fois que le type est demandé", mais pas une fois par demande? –

+1

@Roman Royter Exactement ma question. Comment dois-je le faire par demande? – forhas