我正在尝试为我的应用程序创建一个 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 类。
谢谢。
编辑 我的程序当前包含一个Console application引用一个.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<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());放入Console Application给出的错误SQLitePCL不在当前上下文中,这让我认为我缺少参考?
牧羊人nacy
绝地无双
慕桂英3389331
相关分类