使用异常除外的构造函数注入AppDbContext

问题描述 投票:0回答:1

我试图在我的一个类中使用AppDbContext(属于实体框架核心),并使用autofac对其进行实例化,如下所示:

public class AppDbContext : IdentityDbContext<ApplicationUser>
{
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
    {

    }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        builder.Entity<Message>().Property(m => m.Service).HasConversion<int>();
        builder.Entity<ApplicationUser>().HasMany<Message>(m => m.Messages).WithOne(u => u.User).IsRequired();
        base.OnModelCreating(builder);
    }


    public DbSet<Message> Messages { get; set; }
    public DbSet<UsersCredentialsModel> UsersCredentialsModels { get; set; }
    public DbSet<CookieModel> CookieModel { get; set; }


}

我很难完全理解如何正确地实现这一点。有人可以投掷骨头吗?

public static IContainer Startup()
{
    var builder = new ContainerBuilder();
   // builder.RegisterType<AppDbContext>().As<IdentityDbContext<ApplicationUser>>().InstancePerRequest();

    builder.RegisterType<Application>().As<IApplication>();
    builder.RegisterType<RabbitMQImpl>().As<IListenerQueue>().SingleInstance();
    builder.RegisterType<BotFactory>().As<IBotFactory>();
    var instance = QuartzInstance.Instance;
    builder.RegisterType<QueueImpl>().AsImplementedInterfaces();
    builder.RegisterType<ConsumerSchechuler>().AsImplementedInterfaces();
    builder.RegisterType<SchedulerImpl>().AsImplementedInterfaces();
    builder.RegisterModule(new QuartzAutofacJobsModule(typeof(ConsumerSchedulerJob).Assembly)).RegisterAssemblyModules();
    builder.RegisterModule(new QuartzAutofacJobsModule(typeof(DailyCleanUpJob).Assembly)).RegisterAssemblyModules();
    builder.RegisterInstance(QuartzInstance.Instance).AsImplementedInterfaces();
    return builder.Build();

这是我得到的错误。

[DependencyResolutionException:类型为'JobsImpl.DailyCleanUpJob'的'Autofac.Core.Activators.Reflection.DefaultConstructorFinder'找到的构造函数均不能使用可用的服务和参数来调用:无法解析构造函数“ Void .ctor(Utils.AppDbContext)”的参数“ Utils.AppDbContext上下文”。

c# .net-core autofac
1个回答
0
投票

一个朋友帮我解决了这个问题:

如果您遇到相同的问题,请使用以下代码:

© www.soinside.com 2019 - 2024. All rights reserved.