簡體   English   中英

使用SQLite'尚未為此DbContext配置數據庫提供程序'

[英]'No database provider has been configured for this DbContext' using SQLite

我只是嘗試使用EF Core和SQLite,因此對此問題有些困惑。

如果我嘗試像這樣配置數據庫:

services.AddDbContext<MyDbContext>(options => options.UseSqlite("Filename=./App_Data/dashboard.db") );

然后執行:

dotnet ef migrations add InitialCreate -c MyDbContext

我得到:

'尚未為此DbContext配置數據庫提供程序'

但是,如果我這樣做:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseSqlite("Filename=./App_Data/dashboard.db");
}

所有工作均按預期進行。

我的上下文設置為使用流暢的界面:

public MyDbContext(DbContextOptions options) 
    : base(options)
{
}

public MyDbContext(DbContextOptions<MyDbContext> options)
    : base(options)
{
}

從各種文章看來,其他人都可以使用流利的方法。

還有其他人遇到過此問題並在使用Core 2.1.0時解決了嗎?

我會嘗試向您的項目中添加一個設計時數據庫上下文工廠,如下所示:

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;

namespace yournamespace
{
    public class YourDbContextDesignTimeFactory : IDesignTimeDbContextFactory<YourDbContext>
    {
        public YourDbContext CreateDbContext(string[] args)
        {
            var builder = new DbContextOptionsBuilder<YourDbContext>();
            builder.UseSqlite("Data Source=somename.db");

            return new YourDbContext(builder.Options);
        }
    }
}

我認為連接字符串不一定正確,EF在生成遷移時將使用此字符串創建上下文

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM