C# 尚未创建任何数据库提供程序>;为此DbContext配置。为标识配置SQLLite

C# 尚未创建任何数据库提供程序>;为此DbContext配置。为标识配置SQLLite,c#,entity-framework,asp.net-core,C#,Entity Framework,Asp.net Core,我试图为可复制的回购协议配置MVP,但为此我使用SQLLite,这样它就可以在没有配置的情况下运行,然而,我自己也遇到了一个错误。我使用回购协议来证明其他东西不起作用,但我不明白为什么我会这样做 我的背景是: namespace AuthorisationRepoMS.Dal { public class ApplicationDBContext : IdentityDbContext<ApplicationUser> { public ApplicationDBCon

我试图为可复制的回购协议配置MVP,但为此我使用SQLLite,这样它就可以在没有配置的情况下运行,然而,我自己也遇到了一个错误。我使用回购协议来证明其他东西不起作用,但我不明白为什么我会这样做

我的背景是:

namespace AuthorisationRepoMS.Dal {
public class ApplicationDBContext : IdentityDbContext<ApplicationUser> {

      public ApplicationDBContext(DbContextOptions<ApplicationDBContext> options)
        : base(options) {

    }

    protected override void OnModelCreating(ModelBuilder modelBuilder) {
        base.OnModelCreating(modelBuilder);

    }

    }
}
namespace authorizationrepoms.Dal{
公共类ApplicationDBContext:IdentityDbContext{
公共应用程序DBContext(DbContextOptions选项)
:基本(选项){
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder){
基于模型创建(modelBuilder);
}
}
}
我的Startup.cs如下

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services) {              
        services.AddEntityFrameworkSqlite().AddDbContext<ApplicationDBContext>();
        services.AddIdentity<ApplicationUser, IdentityRole>()
   .AddDefaultUI()
   .AddRoles<IdentityRole>()
   .AddDefaultTokenProviders()
   .AddEntityFrameworkStores<ApplicationDBContext>().AddClaimsPrincipalFactory<MyUserClaimsPrincipalFactory>();  //<---- add this line 
        services.AddControllersWithViews()
        .AddDataAnnotationsLocalization();
        services.Configure<CookiePolicyOptions>(options => {
            options.CheckConsentNeeded = context => true; // consent required
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });
        services.AddSession(opts => {
            opts.Cookie.IsEssential = true; // make the session cookie Essential
        });
        services.AddControllers(config => {
            // using Microsoft.AspNetCore.Mvc.Authorization;
            // using Microsoft.AspNetCore.Authorization;
            var policy = new AuthorizationPolicyBuilder()
                             .RequireAuthenticatedUser()
                             .Build();
            config.Filters.Add(new AuthorizeFilter(policy));
        });
        services.Configure<IdentityOptions>(options => {
            // Default Lockout settings.
            options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
            options.Lockout.MaxFailedAccessAttempts = 5;
            options.Lockout.AllowedForNewUsers = true;
        });
        services.AddTransient<MISDBContextSeedData>();
        services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

    }
//此方法由运行时调用。使用此方法向容器中添加服务。
public void配置服务(IServiceCollection服务){
services.AddEntityFrameworkSqlite().AddDbContext();
服务.额外性()
.AddDefaultUI()
.AddRoles()
.AddDefaultTokenProviders()
.AddEntityFrameworkStores().AddClaimsPrincipalFactory();//{
options.checkApproveRequired=context=>true;//需要同意
options.MinimumSameSitePolicy=SameSiteMode.None;
});
services.AddSession(opts=>{
opts.Cookie.IsEssential=true;//使会话Cookie成为必需的
});
services.AddControllers(配置=>{
//使用Microsoft.AspNetCore.Mvc.Authorization;
//使用Microsoft.AspNetCore.Authorization;
var policy=new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()文件
.Build();
config.Filters.Add(新的授权过滤器(策略));
});
配置(选项=>{
//默认锁定设置。
options.Lockout.DefaultLockoutTimeSpan=TimeSpan.FromMinutes(5);
options.locket.MaxFailedAccessAttempts=5;
options.locket.AllowedForNewUsers=true;
});
services.AddTransient();
services.AddSingleton();
}
但是我得到了以下错误

System.InvalidOperationException:'未创建任何数据库提供程序 为此DbContext配置。提供程序可以通过以下方式配置: 重写DbContext.OnConfiguring方法或使用AddDbContext 在应用程序服务提供商上。如果使用AddDbContext,则 还要确保DbContext类型接受 DbContextOptions对象,并将其传递给 DbContext的基构造函数“”

提前感谢

您需要查看数据库上下文。如果您使用的是SQLite,那么它应该如下所示:

services.AddDbContext<ApplicationDBContext>(options =>
    options.UseSqlite(Configuration.GetConnectionString("DefaultConnection")));
services.AddDbContext(选项=>
options.UseSqlite(Configuration.GetConnectionString(“DefaultConnection”));
这将假定您有一个正确定义的连接字符串,例如SQLite的
“Data Source=database.db”