C# 如果不显式调用SQLitePCL.batters.Init(),是否可以避免sqlite3_Open_v2(…)中SqliteConnection.Open()中的NullReferenceException? 问题
我在使用以下模式调用SQLitePCL.raw.sqlite3_open_v2(字符串文件名、sqlite3&db、Int32标志、字符串vfs)时收到一个NullReferenceException:C# 如果不显式调用SQLitePCL.batters.Init(),是否可以避免sqlite3_Open_v2(…)中SqliteConnection.Open()中的NullReferenceException? 问题,c#,.net,sqlite,.net-framework-4.8,microsoft.data.sqlite,C#,.net,Sqlite,.net Framework 4.8,Microsoft.data.sqlite,我在使用以下模式调用SQLitePCL.raw.sqlite3_open_v2(字符串文件名、sqlite3&db、Int32标志、字符串vfs)时收到一个NullReferenceException: 公共类DBOpenFails { 公共静态void DemoFail() { 使用(var connection=newsqliteconnection(“something.db”)) { connection.Open();//在SQLitePCL.raw.sqlite3_Open_v2(…
公共类DBOpenFails
{
公共静态void DemoFail()
{
使用(var connection=newsqliteconnection(“something.db”))
{
connection.Open();//在SQLitePCL.raw.sqlite3_Open_v2(…)中抛出NullReferenceException
}
}
}
但在使用此模式时不会:
公共类dbopensuccessed
{
公共静态工程()
{
SQLitePCL.batters.Init();//这解决了异常
使用(var connection=newsqliteconnection(“something.db”))
{
connection.Open();//有效
}
}
}
有没有办法避免这个电话
SQLitePCL.batters.Init();
我使用的是.NET Framework 4.8,bin目录中存在以下DLL:
- SQLitePCL.raw的Github页面在“Bundles”部分下声明需要调用Init()
- 但是有一个github问题解决了类似的问题。它建议解决方案是添加对Microsoft.EntityFrameworkCore.Sqlite的包引用
- 我的问题是,我没有使用EFCore,而是使用.NETFramework4.8中的ADO.NET
- 与SQLitePCL.raw的作者进行了讨论,以改进错误消息,显示“您需要调用SQLitePCL.raw.SetProvider()。如果您使用的是捆绑包,则可以通过调用SQLitePCL.batters.Init()来完成。”