[英]DbContext not getting injected by autofac
我有一個問題,我的上下文沒有在我的 startup.cs 中注冊
我的完整啟動看起來像
public class Startup
{
public void Configuration(IAppBuilder app)
{
var builder = new ContainerBuilder();
RegisterApiTypes(builder);
var config = new HttpConfiguration();
// Register your Web API controllers.
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
//Register filters
builder.RegisterWebApiFilterProvider(GlobalConfiguration.Configuration);
var container = builder.Build();
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
app.UseAutofacMiddleware(container);
app.UseAutofacWebApi(config);
app.UseWebApi(config);
}
private static void RegisterApiTypes(ContainerBuilder builder)
{
builder.RegisterType<Logger>()
.As<ILogger>()
.InstancePerRequest();
builder.RegisterType<ApplicationService>().As<IApplicationService>().InstancePerLifetimeScope();
builder.RegisterType<CardRepository>().As<ICardRepository>().InstancePerLifetimeScope();
//tried both of these without any luck
//builder.RegisterType(typeof(CustomContext)).As(typeof(DbContext)).InstancePerRequest();
//builder.RegisterType<CustomContext>().As<DbContext>().InstancePerRequest();
builder.RegisterAssemblyTypes(Assembly.Load("MyApp.Data"))
.Where(t => t.Name.EndsWith("Repository"))
.AsImplementedInterfaces()
.InstancePerLifetimeScope();
}
}
我的上下文類沒什么特別的
public class CustomContext:DbContext
{
public CustomContext() : base("DefaultConnection")
{
}
}
我嘗試在標准庄園中注入上下文
public MyRepository(CustomContext context)
{
_context = context;
}
但是會拋出錯誤
在類型 'MyApp.Data.Repository.MyRepository' 上找到的帶有 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' 的構造函數都不能用可用的服務和參數調用:\\r\\n無法解析參數 'MyApp.Data.CustomContext構造函數‘Void .ctor(MyApp.Data.CustomContext)’的上下文’。”
有沒有其他人經歷過這種行為?
當您將其注冊為DbContext
時,存儲庫直接在其構造函數中要求CustomerContext
,因此容器不知道如何解析CustomerContext
builder.RegisterType<CustomContext>().InstancePerRequest();
將CustomContext
注冊為IDbContext
並且MyRepository
的構造函數的參數應該是IDbContext
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.