Ninject und Verbindungszeichenfolgen

8

Ich bin Ninject sehr neu und versuche Ninject 2 mit MVC und Linq. Ich habe eine SqlProductRepository-Klasse und alles, was ich wissen möchte, ist die beste Möglichkeit, die Verbindungszeichenfolge im Konstruktor zu übergeben, wenn ich das Repository-Objekt in den Controller injiziere.

%Vor%

Dies ist meine ProductController-Klasse, in die ich das Repository einfüge:

%Vor%

Kann mir bitte jemand diesbezüglich Anweisungen geben?

    
user218921 25.11.2009, 21:33
quelle

4 Antworten

15

Sie können es in Ihrer Bindung einrichten

%Vor%     
Ian Davis 25.11.2009 22:03
quelle
5

Sie tun:

%Vor%

in Ihrem Code - dies ist die Neuerung und Bindung an Klassen, die Sie aus Ihrem Code mithilfe eines DI-Containers entfernen möchten. Überlegen Sie zumindest, eine IConnectionStringSelector -Schnittstelle oder etwas ähnliches hinzuzufügen. Sie wollen nicht 20 Bind -Aufrufe für 20 Repositories haben - Sie möchten eine Abstraktion auf höherer Ebene als das.

Ich würde vorschlagen, dass die beste Lösung darin besteht, dass Sie entweder einen IDataContext oder einen IDataContextFactory im Konstruktor anfordern sollten und sich darum sorgen lassen sollten.

    
Ruben Bartelink 26.11.2009 08:59
quelle
2

Sie könnten die Verbindungszeichenfolge als Konstruktorargument angeben, wenn Sie SqlProductRepository an die Schnittstelle IProductRepository binden.

%Vor%

Ich würde einen etwas anderen Ansatz vorschlagen. Zuallererst möchten Sie möglicherweise eine Bindung für die Klasse DataContext im Kernel erstellen. Sie können dies tun, indem Sie eine Provider-Klasse verwenden, um Ihre DataContext zu erstellen, indem Sie die Verbindungszeichenfolge als Argument an ihren Konstruktor übergeben. Dann binden Sie die DataContext an die DataContextProvider .

%Vor%

Als nächstes ändern Sie den Konstruktor der SqlProductRepository -Klasse, um stattdessen ein DataContext -Objekt zu akzeptieren.

%Vor%

Übrigens müssen Sie Ihren Konstruktor nicht mit dem Attribut Inject dekorieren. Ninject wählt standardmäßig den Konstruktor mit den meisten Parametern aus.

    
mrydengren 26.11.2009 18:41
quelle
0

Siehe Code-Snap:

%Vor%

Weitere Informationen finden Sie unter dem folgenden Link

MVC3-, Ninject- und Ninject.MVC3-Problem

    
vrluckyin 09.12.2011 13:52
quelle