翼度科技»论坛 编程开发 .net 查看内容

通用的CRUD之LiteDB

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
前言

你要开发一个系统,是不是首要任务是先建库,建表,建字段,既所谓的数据建模(听起来高大上一点,数据建模也确实是个烧脑的活),要费不少功夫。
不知你是否遇到过这样的场景。A产品有3个测试参数,B产品有6个测试参数,而且值和类型都各不相同,用SQL你要怎么建表呢?
有人会说这简单“参数名,参数值两列搞定”,NO!数据类型考虑了吗,数据量考虑了吗?
有人又说"每个参数建一列,A,B两个产品共建9列用来存各自的值。",如果某天C产品又有9个参数呢,又去增加字段?,你又说”item1,item2...N,多增加几十个备用",有考虑过查询吗?有考虑过他人看到这样的表不头大吗?
还有人说“一列JSON列搞定”,数据查询和数据统计一样把人折磨的不要不要的。
NOSQL的出现,让你眼前一亮,上面的问题迎刃而解。建库,建表,甚至建字段都是很愉悦的事情,你传入什么数据,NOSQL就给你自动创建好,相应的数据库和表(准确的说NoSQL的表叫数据集)。
同一个列可以有不同数据库类型,某一列存单纯的一个数字,还是一个对象都可以随心所欲。
今天要介绍的就是嵌入式NOSQL数据库,LiteDB,就是一个NOSQL版的SQLite。
LiteDB是嵌入式,跨平台,纯c#开发的轻量数据库。详情,请移步到https://www.litedb.org了解。
笔者使用LiteDB,掐指一算,已有6个年头,虽然踩过不少坑,经历过数据库损坏的痛苦经历,但依然没有放弃它,还是爱不释手,因为它在某些应用场景确实非常贴近我的需求。目前经历过几次版本迭代,功能也越来越完善。
现在切入正题
让我一步一步带你增删改查。
安装

Install-Package DbCRUD.LiteDB 安装包
插入数据

插入对象数据到DB
  1.           var dic1 = new Dictionary<string, object>
  2.           {
  3.               { "_id", 2 },
  4.               { "Name", "n2" },
  5.               { "Qty", 200},
  6.               //{ "DDate", DateTime.Now }
  7.           };
  8.           string dictable = "dicdata";
  9.           var result= testdb.Upsert(dictable, dic1);
复制代码
插入JSON数据到DB
  1.   var dic1 = new Dictionary<string, object>
  2.            {
  3.                { "Name", "n2" },
  4.                { "Qty", 19},
  5.                //{ "DDate", DateTime.Now }
  6.            };
  7.            //异步插入
  8.            string jsondata = JsonConvert.SerializeObject(dic1);
  9.            var result = await testdb.InsertAsync("jsondata", jsondata);
复制代码
SQL命令插入,方便喜欢SQL语句的开发人员
  1. testdb.Insert("insert Sqldata('name','date') value ('test','2023-04-16')");
复制代码
批量插入
  1. //插入列表
  2.            List<Dictionary<string, object>> listdata = new List<Dictionary<string, object>>();
  3.            int maxid = testdb.Max<int>(dictable);
  4.            for (int i = 0; i < 10; i++)
  5.            {
  6.                maxid++;
  7.                var dic2 = new Dictionary<string, object>
  8.                {
  9.                    { "_id",maxid },
  10.                    { "Name", "n2" },
  11.                    { "Qty", 19},
  12.                    { "DDate", DateTime.Now }
  13.                };
  14.                listdata.Add(dic2);
  15.            }
  16.            var listResult= testdb.Insert(dictable, listdata);
复制代码
更新数据
  1.             //更新部分字段数据
  2.            var updata = new Dictionary<string, object>
  3.            {
  4.                { "Name", "updatetest" },
  5.                { "Qty", 300}
  6.            };
  7.            var upresult = testdb.UpDate(dictable, updata, "_id=2");
复制代码
更新及插入数据(数据存在更新,不存在插入)
  1.           var dic1 = new Dictionary<string, object>
  2.           {
  3.               { "_id", 2 },
  4.               { "Name", "n2" },
  5.               { "Qty", 200},
  6.               //{ "DDate", DateTime.Now }
  7.           };
  8.           string dictable = "dicdata";
  9.           var result= testdb.Upsert(dictable, dic1);
复制代码
查询数据
  1.          testdb.Find<Dictionary<string, object>>(dictable, "_id=2")
复制代码
删除数据
  1.   string dictable = "dicdata";
  2.   var result = testdb.Delete(dictable,2);
复制代码
更多使用方法请移步到仓库 https://gitee.com/lzcode/db-crud
我的分享希望能给你带去帮助,您的打赏是我继续为您分享的动力。


来源:https://www.cnblogs.com/zzwen/archive/2023/05/05/17351036.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具