作者:爱情失挖_904 | 来源:互联网 | 2022-12-14 14:08
我正在尝试为我的应用程序创建一个SQLite数据库,并遇到了这个错误.
System.Exception:'您需要调用SQLitePCL.raw.SetProvider().如果您正在使用捆绑包,则可以通过调用SQLitePCL.Batteries.Init()来完成.
我创建了一个简单的控制台应用程序,运行完全相同的代码进行创建,没有任何问题.代码看起来像这样!
using (var dataCOntext= new SampleDBContext())
{
dataContext.Accounts.Add(new Account() { AccountName = name, AccountBalance = balance });
}
public class SampleDBContext : DbContext
{
private static bool _created = false;
public SampleDBContext()
{
if (!_created)
{
_created = true;
Database.EnsureDeleted();
Database.EnsureCreated();
}
}
protected override void OnConfiguring(DbContextOptionsBuilder optionbuilder)
{
optionbuilder.UseSqlite(@"Data Source="Source folder"\Database.db");
}
public DbSet Accounts { get; set; }
}
任何人都可以解释这个问题吗?我在两个项目上安装了相同的Nuget Packages,两者之间的唯一区别是数据源和我用于数据库的POCO类.
谢谢.
编辑
我的程序目前包含一个Console application
引用a的程序.Net Framework Class Library
.在Console application
简单的有一个构造函数如下:
public Program()
{
using (var db = new FinancialContext())
{
db.Accounts.Add(new Account() { AccountName = "RBS", AccountBalance=20 });
}
}
类库有一个FinancialContext,如下所示:
public class FinancialContext : DbContext
{
public DbSet Accounts { get; set; }
public FinancialContext()
{
# Database.EnsureDeleted();
Database.EnsureCreated();
}
protected override void OnConfiguring(DbContextOptionsBuilder optionbuilder)
{
optionbuilder.UseSqlite(@"Data Source="Some Source Folder"\Database.db");
}
}
上面的错误显示在#符号点,我编码的方式有问题吗?我真的想知道问题是什么,所以我可以正确地修复它而不是应用'修复'.另外我在评论中尝试了这个建议,但是把代码行SQLitePCL.raw.SetProvider(new SQLitePCL.SQLite3Provider_e_sqlite3());
放在Console Application
给出的错误SQLitePCL
中不是在当前的上下文中,这让我觉得我错过了一个引用?
1> René Schindh..:
当我试图避免任何其他依赖项并且去了Microsoft.EntityFrameworkCore.Sqlite.Core
包时,这发生在我身上.
您应该安装并使用该Microsoft.EntityFrameworkCore.Sqlite
包,它依赖于SQLitePCLRaw
包.