1
        builder.RegisterType<DataContext>().As<DbContext>();

        builder.RegisterType<AnnoucementRepository>().As<IAnnouncementRepository>().WithParameter("DataContext", new DataContext()).InstancePerHttpRequest();
        builder.RegisterType<LanguageRepository>()
               .As<ILanguageRepository>()
               .WithParameter("DataContext", new DataContext())
               .InstancePerHttpRequest();

"DataContext", new DataContext()私は上記のことを持っています。私が持っているすべてのリポジトリについて繰り返す必要がないように、より良いものを見つけたいと思っています。

データ コンテキストを登録してリポジトリに挿入するにはどうすればよいですか? http リクエストごとに 1 回。

4

1 に答える 1

2

DataContextスコープを使用して自分自身を登録している場合InstancePerHttpRequest、Autofac はDataContextリクエストごとに 1 つのインスタンスを作成します。Autofac は、パラメーターとして明示的に指定しなくても、リポジトリに挿入します。

builder.RegisterType<DataContext>().InstancePerHttpRequest();

builder.RegisterType<AnnoucementRepository>()
       .As<IAnnouncementRepository>().InstancePerHttpRequest();
builder.RegisterType<LanguageRepository>()
       .As<ILanguageRepository>().InstancePerHttpRequest();

補足: 実際、元の登録コードDataContextでは、リポジトリ間で共有されていない 2 つの個別のインスタンスを作成しました。

于 2013-10-01T20:05:25.450 に答える