注入ApplicationDbContext以在多层项目中的Aspnet Core Identity中使用

时间:2017-06-13 13:14:34

标签: c# asp.net-core entity-framework-6 asp.net-core-mvc asp.net-core-identity

我有一个多层体系结构的c#项目,我不想在Presentation中添加Reference to My DAL层,所以我需要在运行时注入ApplicationDbContext以用于Identity,对于这种方法,我在Business层中编写了一个扩展方法为了这。 (表示层引用了业务层)并在startup.cs中添加了此方法,如下所示:

public static IdentityBuilder AddDbContext(this IdentityBuilder builder, IServiceCollection services, string connStr)
    {
        services.AddTransient<ApplicationDbContext>(_ => new ApplicationDbContext(connStr));

        builder.AddEntityFrameworkStores<ApplicationDbContext>()
               .AddDefaultTokenProviders();            

        return builder;
    }

Startup.cs

public void ConfigureServices(IServiceCollection services)
    {           
        services.AddIdentity<ApplicationUser, IdentityRole>()
            .AddDbContext(services, Configuration.GetConnectionString("DefaultConnection"));

        services.AddMvc();

        // Add application services.
        services.AddTransient<IEmailSender, AuthMessageSender>();
        services.AddTransient<ISmsSender, AuthMessageSender>();
    }

但是当我运行我的应用程序时,它在尝试运行时崩溃。

错误页面如下:

enter image description here

1 个答案:

答案 0 :(得分:0)

我找到了问题, 实际上问题不是因为DI,而是因为我没有将我的Domian项目的使用指令添加到_ViewImports。