2010-03-09 5 views
2

Je suis actuellement en train de la chaîne de connexion pour mon LINQ au contexte de données SQL en utilisant une classe wrapper pour que je puisse passer une chaîne de connexion dans le constructeur DataContext généré:StructureMap et LINQ to connexion SQL chaîne

public class DB : GeneratedDataContext { 
    public DB() : base(ConfigurationManager.ConnectionStrings["myconnectionstring"].ConnectionString) { } 
} 

Les implémentations de mon référentiel LinqToSql fonctionnent alors directement avec la classe DB. J'utilise StructureMap et je me demande si c'est la meilleure approche pour ceci, est-ce que je devrais plutôt prendre un paramètre de chaîne de connexion en tant que constructeur sur mon référentiel et définir cet argument dans ma strapper de démarrage StructureMap?

Merci, Ben

Répondre

3

Réponse courte à votre question: oui, StructureMap doit gérer la configuration de votre connexion db.

-je utiliser quelque chose comme ceci pour enregistrer mes datacontext avec StructureMap

ForRequestedType<MyDataContext>() 
    .CacheBy(StructureMap.Attributes.InstanceScope.Hybrid) 
    .TheDefault.Is.ConstructedBy(
     () => 
     new MyDataContext(ConfigurationManager 
           .ConnectionStrings["MyConnectionString"] 
           .ConnectionString) 
     ); 

De cette façon, vous aurez pas besoin d'un emballage pour votre datacontext soit.

+0

Super, merci. Mes référentiels appellent actuellement un constructeur sans paramètre sur mon wrapper de contexte de données. Donc, si j'implémente votre suggestion, comment est-ce que j'instancie de nouvelles instances du contexte de données dans mes dépôts (puisqu'elles s'attendent à ce qu'une chaîne de connexion soit passée dans le constructeur)? Merci –

+0

@Ben Vos référentiels ne devraient pas créer de nouvelles instances de votre datacontext, ils devraient être injectés par structuremap – Kirschstein

+0

D'accord, je comprends. Donc, c'est comme l'exemple sur http://weblogs.asp.net/shijuvarghese/archive/2008/10/10/asp-net-mvc-tip-dependency-injection-with-structuremap.aspx. Une question alors, j'utilise une approche atomique pour mes méthodes de mise à jour (instanciation d'un nouveau contexte de données et encapsulation dans une instruction using ainsi correctement disposée). Devrais-je continuer à faire cela? –