为了账号安全,请及时绑定邮箱和手机立即绑定

如何调用 SQLitePCL.Batteries.Init().?

如何调用 SQLitePCL.Batteries.Init().?

C#
四季花海 2021-07-20 21:32:41
我正在尝试为我的应用程序创建一个 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不在当前上下文中,这让我认为我缺少参考?
查看完整描述

3 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

当我试图避免任何额外的依赖项并选择Microsoft.EntityFrameworkCore.Sqlite.Core软件包时,这发生在我身上。

您应该安装并使用该Microsoft.EntityFrameworkCore.Sqlite包,它依赖于该SQLitePCLRaw包。


查看完整回答
反对 回复 2021-07-31
?
绝地无双

TA贡献1946条经验 获得超4个赞

安装Nuget Package Microsoft.Data.Sqlite(不是Microsoft.Data.Sqlite.Core)。(我的版本是2.2.2)


并使用SQLitePCL.raw.SetProvider(new SQLitePCL.SQLite3Provider_e_sqlite3());


 connection = new SqliteConnection("Data Source = Sample.db");


 SQLitePCL.raw.SetProvider(new SQLitePCL.SQLite3Provider_e_sqlite3());


 connection.Open();

但我建议nuget package System.Data.SQLite改用Microsoft.Data.Sqlite


查看完整回答
反对 回复 2021-07-31
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

我有这个非常准确的错误。原来我Microsoft.Data.Sqlite.Core安装了包(2.2.4),但没有安装SQLitePCLRaw.bundle_winsqlite3.

安装包SQLitePCLRaw.bundle_winsqlite3(1.1.13) 解决了这个问题。


查看完整回答
反对 回复 2021-07-31
  • 3 回答
  • 0 关注
  • 366 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信