Ich begann gerade erst, mich mit MVC anzufreunden, als mir jemand IoC-Container erwähnte, und jetzt fühle ich mich, als wäre ich ein paar tausend Fuß gefallen und muss wieder hochklettern. Ich war versucht, sie einfach zu ignorieren, aber dann las ich den Component Lifestyle. Dies scheint eine große Sache für mich zu sein, wie erklärt, kann nicht übernommen Änderungen an Datenbank-Updates über Anfragen Leck, wenn meine Repositories Lifestyle auf Singleton anstelle von PerWebRequest gesetzt ist.MVC IoC Komponente Lifestyle PerWebRequest
Also meine Frage ... gibt es eine Möglichkeit, die Komponente Lifestyle Affekt ohne Verwendung von IoC-Containern zu erstellen, oder ist das die einzige Option?
Danke ... Entkopplung meines Codes ist * nett * aber nicht wichtig für mich zu dieser Zeit. Die Integrität der Daten über Anfragen hinweg ist jedoch entscheidend - und mein Anliegen ist, dass ich meine App ohne IoC irgendwie für potenzielle Korruptionsprobleme öffne. (HINWEIS: Ich muss noch eine echte App mit MVC implementieren - nur vier oder fünf Demo-Apps. Ich habe gerade zwei Bücher über das Thema gelesen - und der IoC-Container Betreff hat mich für eine Schleife geworfen) – dizzyguy
"Ihr * SqlProductsRepository "Derzeit gibt es diesen Singleton-Lifestyle, so dass Sie nur einen einzelnen LINQ zu SQL * DataContext * am Leben erhalten, solange Ihre App läuft und sie für alle Anfragen freigibt. Das scheint in Ordnung zu sein ... denn bisher ist der gesamte Datenzugriff schreibgeschützt, aber es würde zu Problemen führen, wenn Sie mit dem Bearbeiten von Daten beginnen. Nicht festgeschriebene Änderungen würden über die Anfragen hinaus führen. "- Pro ASP.NET MVC Framework, S. 101 – dizzyguy
Wenn Sie eine Instanz Ihres Datenkontexts in einem Controller oder einem Service instanziieren und diese in Ihr Repository oder Ihre Repositorys für diese Transaktion" injizieren ". ... dann call commit ... und dann totzuschlagen, dass der Datenkontext "in Ordnung" sein sollte. Ich lasse meinen datacontext niemals während des gesamten Lebenszyklus einer Anwendung offen. Er liegt außerhalb des Bereichs einer Transaktion. ..die ich für einen sicheren Weg hielt. –