を注入することなく、各コントローラ用のスコープを要求し、私は最近、と題するこの記事に出くわした: LINQのSQLとASP.NET MVCへ - リクエスト パーのDataContextをこのリンクで: http://www.jeremyskinner.co.uk/2010/01/31/linq-to-sql-and-asp-net-mvc-datacontext-per-request/Ninject、LINQ to SQLのは、
私は希望私はmvc 3 rtmを使用しているので、好ましくは新しいmvc 3依存リゾルバを使用して、構造マップではなくninjectを使用してこれを設定します。
記事の関連部分はこれです:まず、カスタムレジストリインスタンスを渡しあなたのGlobal.asax内ObjectFactory.Configureを呼び出すことによって、のStructureMapを設定する必要があります
:
protected void Application_Start() {
RegisterRoutes(RouteTable.Routes);
ObjectFactory.Configure(cfg => {
cfg.AddRegistry(new MyRegistry());
});
}
はMyRegistryのコードは次のようになります。
public class MyRegistry : Registry {
public MyRegistry() {
For<BlogDataContext>()
.HttpContextScoped()
.Use(c => new BlogDataContext());
Scan(scan => {
scan.AddAllTypesOf<Controller>();
});
}
}
ここでは、HTTPリクエストごとに自分のBlogDataContextのインスタンスを1つ作成し、各Controllerインスタンスをコンテナに登録するようにStructureMapに指示します。
次に、StructureMapを使用してコントローラをインスタンス化するようにMVCに指示する必要があります。これは、カスタムControllerFactoryを作成することによって行うことができます。
public class StructureMapControllerFactory : DefaultControllerFactory {
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType) {
return (IController) ObjectFactory.GetInstance(controllerType);
}
}
私たちは、その後、私たちのApplication_StartでStructureMapControllerFactoryでDefaultControllerFactoryを置き換えることができます。
protected void Application_Start() {
RegisterRoutes(RouteTable.Routes);
ObjectFactory.Configure(cfg => {
cfg.AddRegistry(new MyRegistry());
});
ControllerBuilder.Current.SetControllerFactory(
new StructureMapControllerFactory());
}
私はninject 2.0よりもむしろと同じことをしたいと思います構造マップ。私はmvc3のninjectでmvc 3サイトを構築しています。私はnugjectからninject mvc 3パッケージをダウンロードしました。そして、このファイルを私のソリューションに入れて、配線を処理しました。 AppStart_NinjectMVC3.cs
私はstructurmapを使いたくないのですが、同じ設定をninjectで行うことができますが、どのように配線するのかは分かりません。
ありがとうございます。