我正在尝试为我的应用程序创建 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<Account> Accounts { get; set; }
}
谁能阐明这个问题?我在两个项目上安装了相同的 Nuget 包,两者之间的唯一区别是数据源和我用于数据库的 POCO 类。
Thanks.
Edit我的程序目前包括Console application
引用了一个.Net Framework Class Library
. The Console application
simple 有一个如下所示的构造函数:
public Program()
{
using (var db = new FinancialContext())
{
db.Accounts.Add(new Account() { AccountName = "RBS", AccountBalance=20 });
}
}
类库有一个 FinancialContext 如下:
public class FinancialContext : DbContext
{
public DbSet<Account> 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());
in the Console Application
给出了错误SQLitePCL
不在当前上下文中,这让我觉得我错过了一个参考?