• 把Access 迁移到Sqlite, 并在windows/Mac 测试


    起因: 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

    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 就没问题

  • 相关阅读:
    QR 编码原理(二)
    QR二维码原理(一)
    UML类图表达
    位运算以及逻辑运算
    SLAM数据集整理
    graph slam BACK END 相关技术资料收集
    Topic与Queue
    集群、分布式与微服务
    spring手动配置
    spring项目gitignore
  • 原文地址:https://www.cnblogs.com/zitjubiz/p/Sqlite_netCore_win_mac.html
Copyright © 2020-2023  润新知