在.NET环境中使用Entity Framework Core(EF Core)连接SQLite数据库时,报错。
使用框架 .NET8
错误信息:
Exception: You need to call SQLitePCL.raw.SetProvider(). If you are using a bundle package, this is done by calling SQLitePCL.Batteries.Init().
这个错误主要原因就是没有安装nuget包: SQLitePCLRaw.bundle_e_sqlite3
需要安装包:
SQLitePCLRaw.bundle_e_sqlite3,版本 2.1.10
Microsoft.EntityFrameworkCore.Sqlite.Core,版本 9.0.0
ef core上下文参考代码:
using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Options;
using System.Reflection.Metadata;
using WpfRepairProject.Model;namespace WpfRepairProject.IData_impl
{public class EFContextSQLite : DbContext{protected override void OnConfiguring(DbContextOptionsBuilder options){try{ string filePath = "G:\\DataBase\\ljRepaireProject.sqlite"; options.UseSqlite($"Data Source={filePath}"); //设置不跟踪所有查询 options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);#if DEBUG//启用敏感数据日志记录options.EnableSensitiveDataLogging();//记录日志 options.LogTo(msg =>{//调试-窗口消息System.Diagnostics.Debug.WriteLine(msg);//输出-窗口消息Console.WriteLine(msg);}, Microsoft.Extensions.Logging.LogLevel.Information);
#endif}catch (Exception ex){ex = ex.InnerException ?? ex;//LogHelpter.AddLog("数据库连接异常," + ex.Message, "error_DbContext");}}public DbSet<K_department> K_department { get; set; }}
}