在C#中连接SQLite数据库时遇DbContext未找到及EF版本冲突问题
解决EF Core连接SQLite迁移错误的方案
1. 修正DbContext的访问修饰符
你的ApplicationContext是internal类,EF Core迁移工具需要从外部程序集访问该类,必须将其改为public:
public class ApplicationContext : DbContext { // ... 你的配置和DbSet定义 }
2. 明确指定EF Core工具执行命令
由于同时安装了EF6和EF Core,执行迁移命令时要明确指定使用EF Core工具,避免命令冲突:
PM> EntityFrameworkCore\Add-Migration first
3. 确保DbContext配置正确
检查ApplicationContext的SQLite连接配置是否完整:
方式一:在OnConfiguring中直接配置
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { optionsBuilder.UseSqlite("Data Source=your_database_name.db"); } }
方式二:依赖注入配置(.NET 6+)
在Program.cs中注册DbContext:
builder.Services.AddDbContext<ApplicationContext>(options => options.UseSqlite(builder.Configuration.GetConnectionString("SqliteConnection")));
同时在appsettings.json中添加连接字符串:
{ "ConnectionStrings": { "SqliteConnection": "Data Source=your_database_name.db" } }
4. 检查必备包是否安装
确保已安装以下EF Core相关包:
Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.SqliteMicrosoft.EntityFrameworkCore.Tools(迁移工具核心依赖)
5. 指定目标程序集(多项目场景)
如果DbContext不在启动项目中,执行命令时需指定项目参数:
PM> EntityFrameworkCore\Add-Migration first -Project 你的数据层项目名 -StartupProject 你的启动项目名
内容的提问来源于stack exchange,提问作者OUTWEST
相关产品推荐
相关产品推荐

