随笔 - 435  文章 - 0  评论 - 111  阅读 - 62万 

起因: Access在win10+ .netCore6.0 的情况下,出现找不到provider的情况,但是用.net framework4.6是正常的. 可能是我的Access安装的是32位的原因. 我也不想折腾安装office 64位了.

Sqlite 我下载了最新的3.38版本, 界面管理器下载了DB Browser for SQLite, SQLite的字段类型只有Integer(64位)和Text, 字段假如设为自动增长的话,它是自动生成一个sqlite——sequence的表里面,name=表名XXX,seq=当前次序

 

所以想把所有用到32bit的东西都迁移到64位,尝试了Sqlite, 可以. .netCore下载 Microsoft.Data.Sqlite; 这个是带底层Bundle的PCL.Raw包. 另外的Microsoft.Data.Sqlite是不带底层包.要另外下载, 但是在mac里要另外的SQLitePCLRaw.lib_e_sqlite3.osx

1
2
3
Connection = new SqliteConnection(cnStr);
//引用Microsoft.Data.Sqlite 包,这个才包含SQLite3Provider_e_sqlite3的Provider访问程序
 SQLitePCL.raw.SetProvider(new SQLitePCL.SQLite3Provider_e_sqlite3()); 

这个库是不带SqlAdapter, 因为sqlite的列是动态类型的,它不想包装,可以手动自己写一个类 

https://docs.microsoft.com/zh-cn/dotnet/standard/data/sqlite/adonet-limitations
 https://docs.microsoft.com/zh-cn/dotnet/standard/data/sqlite/dapper-limitations

我试了一下, 这个版本是支持事务的

Connection.Open();
myTrans = Connection.BeginTransaction(); //如果你用SQLite 浏览工具编辑还没有应用更改,锁定状态下,无法开始事务
SqliteCommand command = new SqliteCommand(sql, Connection, myTrans);

 affectRows=command.ExecuteNonQuery();
 myTrans.Commit();

 

把windows写好的.netcore代码 整个目录拷贝到Mac上Build,就会出现下面的错误

NuGet.Packaging.Core.PackagingException: Unable to find fallback package folder 'C:\Program Files\dotnet\sdk\NuGetFallbackFolder'

或者 这个错误

The type initializer for 'Microsoft.Data.Sqlite.SqliteConnection' threw an exception.

只要把bin目录,obj目录删掉, 重新unload/load project, 重新build一次就好了

 

 

=======================Sqlite 不能很好兼容net standard2.0==========================

我尝试把Sqlite的读写,放在一个net standard2.0的library里, 然后在.net6.0里可以正常访问Sqlite, 但是如果再新建一个net4.61的winform程序,引用net standard2.0的library, 就会出现

找不到SQLitePCLRaw.provider.e_sqlite3.dll的错误, 结果折腾了我一天.  net4.61的winform直接引用Microsoft.Data.Sqlite, SQLitePCLRaw.bundle_e_sqlite3 就没问题

 

posted on   Gu  阅读(341)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
历史上的今天:
2017-03-08 从零开始学习Vue(二)
2012-03-08 .net 程序员 java 开发入门
2011-03-08 Sql Express Profiler
点击右上角即可分享
微信分享提示