Sqlite

连接字符串

//相对路径 
public static string ConnectionString= @"DataSource=SqlSugar4xTest.sqlite"; 
 
//完整路径
public static string ConnectionString= @"DataSource=c:\database\SqlSugar4xTest.sqlite";
//动态获取完整路径 Path.Combine(Environment.CurrentDirectory, "SampleDB.db")


Sqlite加密

NUGET安装 

1. SQLitePCLRaw.bundle_e_sqlcipher2.0.4 

2. Microsoft.Data.Sqlite.Core 5.0.9    

3. SqlSugarCore  或者 SqlSugarCore_NetCore2 (支持.Framework 4.7.2) 

string dbName = Path.Combine(Environment.CurrentDirectory, "SampleDB.db");
string connStr=new SqliteConnectionStringBuilder(){
                        DataSource= dbName,
                        Mode=SqliteOpenMode.ReadWriteCreate
                        ,Password ="admin"
                    }.ToString();

性能优化:因为加密Open会很慢所以建议

使用:SqlsugarClient的单例+关闭自动释放 , 如果业务所有用到db全部用 Lock(db){  db.xxx;db.xxx;  } 防止并发问题

因为SqlsugarClient不是线程安全对象所以加Lock防止并发(免费加密目前不适合高并发项目,只适单用户项目)

注意:不是加密不要这么用 ,这么用主要是解决免费加密Open慢的问题


新人福利

当遇到Nuget安装System.Data.SQLite失败或者无法安装,或者一直报引用兼容错误不知道如何解决请使用 新人包

Sqlite兼容驱动包下载.rar

1、Nuget安装SqlSugar或者引用最新的SqlSugar.dll

2、解压下载文件包 

3、System.Data.SQLite.dll 引用到项目

4、x86 x64 2个文件夹扔到bin下面的dll 同一目录


可以跑的DEMO

如果还不会安装的话可以拿这个DEMO跑了试试

SugarRepository.rar


并行写入

通过异步是可以实现并行写入

 var ts = new List<Task>();
 for (int i = 0; i < 1000; i++)//建议一次执行Task不工
 {
                ts.Add(Task.Run(async () =>
                {
                        await db.CopyNew().Queryable<Order>().FirstAsync();
                 }));
}
Task.WhenAll(ts).GetAwaiter().GetResult();

注意:CopyNew和  Async方法是重点不能是同方法

常见错误

1、database is locked

这个输出是正常现象用 db.colse会有 用db.dispose就不会有  如果你真想没有,那么你就用using(var db=new sqlsugarclient)

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

出现这个错一般是安装问题,独立安装 Microsoft.Data.Sqlite.Core 每个类都统一最新版本

文档:SqlSugar5.0