发现个好玩的东西,LiteDB,类似于Sqlite,但是性能更好一点。完全使用C#版本写成,记录一下使用方法,当前版本V4

首先nuget安装

LiteDB

定义文件Path,如果不存在的话会自动创建

public static string Path = @"D:\Core\Test\Test.LiteDataBase\ocean.db";

定义实体类

    public class UserInfo
    {
        [BsonId]//主键标识
        public string Code { get; set; }
        public string Name { get; set; }
        public bool IsBoy { get; set; }
        public DateTime BirthDay { get; set; }
    }

增加和更新数据

            using (var db = new LiteDatabase(Config.Path))
            {
                var table = db.GetCollection();
                for (int i = 10; i < 20; i++)
                {
                    UserInfo info = new UserInfo();
                    info.Code = "Code-" + i.ToString();
                    info.Name = "Name" + i;
                    info.IsBoy = false;
                    info.BirthDay = DateTime.Now.AddDays(i*-1);                     
                    
                    table.InsertBulk(new List() { info });//批量添加
                    table.Insert(info);//添加
                    table.Update(info);//更新
                    table.Upsert(info);//如果没有则添加,有则删除
                }
            }

删除数据

            using (var db = new LiteDatabase(Config.Path))
            {
                var table = db.GetCollection();
                for (int i = 12; i < 13; i++)
                {
                    //主键删除
                    table.Delete(Query.EQ("_id", "Code-13"));
                    table.Delete("Code-15");
                    //条件删除
                    table.Delete(a => a.Name == "Name17");
                }
            }

查询

            using (var db = new LiteDatabase(Config.Path))
            {
                var table = db.GetCollection();

                //单条数据
                var info = table.FindById("Code-14");//根据主键找
                var info2 = table.FindOne(Query.EQ("Name", "Name19"));//Query表达式
                var info3 = table.FindOne(a=>a.Name== "Name11");//Linq表达式

                //多条数据
                var list= table.Find(Query.EQ("Name", "Name19"));
                var list2= table.Find(a=>a.Code== "Code-18");
                var list3 = table.Find(a => a.BirthDay > DateTime.Now.AddDays(-15));
            }

 

记录一个GUI的管理工具

https://github.com/falahati/LiteDBViewer/releases





Leave a Reply