我试图为我的应用程序创建一个SQLite数据库,并遇到此错误。
我创建了一个简单的控制台应用程序,可以运行完全相同的代码进行创建,没有任何问题。代码看起来像这样!
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
不在当前上下文中,这让我觉得我缺少引用了吗? 最佳答案
当我尝试避免任何其他依赖关系并选择Microsoft.EntityFrameworkCore.Sqlite.Core
包时,这发生在我身上。
您应该改为安装并使用Microsoft.EntityFrameworkCore.Sqlite
软件包,该软件包依赖于SQLitePCLRaw
软件包。
关于c# - 如何调用SQLitePCL.Batteries.Init()。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50746465/