LiteDB是一个开源的 .NET 开发的小型快速轻量级的 NoSQL 嵌入式数据库,特性:

无服务器的 NoSQL 文档存储,数据存储在单一文件中
类似 MongoDb 的简单 API
100% C# 代码,支持 .NET 3.5,单一 DLL,可从 NuGet 安装: Install-Package LiteDB
支持 ACID 事务控制
日志模式下的写失败恢复
可存储 POCO 类或者 BsonDocument
支持文件存储和数据流存储 (like GridFS in MongoDB)
单一数据文件存储,类似 SQLite
文档字段索引,用于快速搜索
支持使用 LINQ 查询
Shell 命令行 (get on  - try this online version

自生成id测试
  /// <summary>
/// 自生成id测试
/// </summary>
public void AutoId_Test()
{
//打开或者创建新的数据库
using (var db = new LiteDatabase("sample.db"))
{
var cs_int = db.GetCollection<EntityInt>("int");
// int类型自生成Id
var cint_1 = new EntityInt { Name = "Using Int 1" };
var cint_2 = new EntityInt { Name = "Using Int 2" };
var cint_5 = new EntityInt { Id = , Name = "Using Int 5" }; // set Id, do not generate (jump 3 and 4)!
var cint_6 = new EntityInt { Id = , Name = "Using Int 6" }; // for int, 0 is empty
var cint_7 = new EntityInt { Name = "Using Int 7" };
cs_int.Insert(cint_1);
cs_int.Insert(cint_2);
cs_int.Insert(cint_5);
cs_int.Insert(cint_6);
cs_int.Insert(cint_7);
Console.WriteLine(cint_1.Id);
Console.WriteLine(cint_2.Id);
Console.WriteLine(cint_5.Id);
Console.WriteLine(cint_6.Id);
Console.WriteLine(cint_7.Id); //guid
var guid = Guid.NewGuid();
var cguid_1 = new EntityGuid { Id = guid, Name = "Using Guid" };
var cguid_2 = new EntityGuid { Name = "Using Guid 1" };
var cguid_3 = new EntityGuid { Name = "Using Guid 2" };
Console.WriteLine("Guid.NewGuid()="+guid);
Console.WriteLine(cguid_1.Id);
Console.WriteLine(cguid_2.Id);
Console.WriteLine(cguid_3.Id);
// oid
var oid = ObjectId.NewObjectId();
var coid_1 = new EntityOid { Name = "ObjectId-1" };
var coid_2 = new EntityOid { Id = oid, Name = "ObjectId-2" };
Console.WriteLine("ObjectId.NewObjectId()=" + oid);
Console.WriteLine(coid_1.Id);
Console.WriteLine(coid_2.Id);
// string 没有自动生成的id
var cstr_1 = new EntityString { Name = "Object using String" };
Console.WriteLine(cstr_1.Id); }
}
   /// <summary>
/// int类型ID
/// </summary>
public class EntityInt
{
public int Id { get; set; }
public string Name { get; set; }
}
/// <summary>
/// Guyid类型ID
/// </summary>
public class EntityGuid
{
public Guid Id { get; set; }
public string Name { get; set; }
}
/// <summary>
/// LiteDB.ObjectId
/// </summary>
public class EntityOid
{
public ObjectId Id { get; set; }
public string Name { get; set; }
}
/// <summary>
/// 字符串类型
/// </summary>
public class EntityString
{
public string Id { get; set; }
public string Name { get; set; }
}

如上图所示:

int类型id自动增长,当你设置了大于0的id时(5),将跳过3、4,后面的从5开始增长。

guid类型的id需要我们自己生成。

oid类型id也是需要自己生成。

string 类型无法自动生成id。

对于其它功能:

大文件、并发、json、linq、filestorage等功能,大家可参考源代码里面的单元测试,如下:

嵌入式Nosql数据库——LiteDB的更多相关文章

  1. .NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程

    在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑) 与 .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB中,介绍了LiteDB的基本使用情况以及部 ...

  2. .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB

    今天给大家介绍一个不错的小巧轻量级的NoSQL文件数据库LiteDB.本博客在2013年也介绍过2款.NET平台的开源数据库: 1.[原创]开源.NET下的XML数据库介绍及入门 2.[原创]C#开源 ...

  3. 在实际项目中使用LiteDB NoSQL数据库

    LiteDB 是一个 NoSQL 数据库,特点是 MongoDB like 和 0 配置.100% 原汁原味的 C# 开发, Release 只有一个 DLL,官方有一下适用场景:移动App,桌面小应 ...

  4. 小型单文件NoSQL数据库SharpFileDB初步实现

    小型单文件NoSQL数据库SharpFileDB初步实现 我不是数据库方面的专家,不过还是想做一个小型的数据库,算是一种通过mission impossible进行学习锻炼的方式.我知道这是自不量力, ...

  5. NOSQL 数据库 CodernityDB

    CodernityDB 是一个开源的纯 Python 实现的.无第三方依赖.支持多平台的 NoSQL 数据库. 关键特性: 纯 Python 开发 支持多索引 快速 (每秒将近10万的写入和超过10万 ...

  6. 15个nosql数据库

    1.MongoDB 介绍 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.主要解决的是海量数据的访问效率问题,为WEB应用提供可扩展的高性能数据存储解决方案.当数据量达到50GB以上 ...

  7. HBase与MongDB等NoSQL数据库对照

    HBase概念学习(十)HBase与MongDB等NoSQL数据库对照 转载请注明出处: jiq•钦's technical Blog - 季义钦 一.开篇 淘宝之前使用的存储层架构一直是MySQL数 ...

  8. 10个出色的NoSQL数据库

    http://www.infoq.com/research/nosql-databases?utm_source=infoqresearch&utm_campaign=lr-homepage ...

  9. HBase概念学习(十)HBase与MongDB等NoSQL数据库对照

    转载请注明出处: jiq•钦's technical Blog - 季义钦 一.开篇 淘宝之前使用的存储层架构一直是MySQL数据库,配合以MongDB,Tair等存储. MySQL因为开源,而且生态 ...

随机推荐

  1. TensorFlow高级API(tf.contrib.learn)及可视化工具TensorBoard的使用

    一.TensorFlow高层次机器学习API (tf.contrib.learn) 1.tf.contrib.learn.datasets.base.load_csv_with_header 加载cs ...

  2. Calculator Part Ⅰ (代码规范化修改)

    GitHub/object-oriented 本次参照的C++代码规范 有一些规范内容在文件中其实并未提及,比如:空格的使用,修改的时候真的是一头雾水--根据文件中的例子,发现了一些文字部分没有提到的 ...

  3. Java中I/O流之Object流

    Java 中的 object 流:直接将 Object 对象写入或读出 1. serializable 接口:序列化,可以被序列化的,若确实需要将某个类的对象写在硬盘上或网络上,想把他们序列化成一个字 ...

  4. 团队作业7——第二次项目冲刺(Beta版本)-第一篇

    1.当天站立式会议照片: 2.工作分工: 团队成员 分工 郭达22120 项目整合,后台代码 刘德培44060 数据库模块后台连接 石浩洋22061 前台界面优化 曾繁钦22056 前台界面优化.测试 ...

  5. PHP中如何使用Redis接管文件存储Session详解

    https://www.jb51.net/article/151580.htm 前言 php默认使用文件存储session,如果并发量大,效率会非常低.而redis对高并发的支持非常好,可以利用red ...

  6. 苹果ATS特性服务器配置指南 HTTPS 安卓可以用 IOS 报错。

    解决方案:https://www.qcloud.com/document/product/400/6973 ATS检测:https://www.qcloud.com/product/ssl#userD ...

  7. BZOJ 1854 游戏(二分图匹配或并查集)

    此题的二分图匹配做法很容易想,就是把属性当做s集,武器当做t集,如果该武器拥有该武器则连一条边. 那么答案就是求该二分图的最大前i个匹配.将匈牙利算法改一改,当前找不到增广路就break. 但是过这个 ...

  8. P1120 小木棍 [数据加强版](poj 1011)

    题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度,编 ...

  9. Android 通知机制 Toast和Notification

    Android常用的反馈系统状态信息的方式主要有三种 Toast提醒 通知栏提醒 对话框提醒 三种提醒分别适用于页面的提示.系统交互事件的通知和非常重要的提醒: 一.Toast Toast toast ...

  10. POJ1279:Art Gallery——题解

    http://poj.org/problem?id=1279 题目大意:给按照顺时针序的多边形顶点,问其内核可行区域面积. —————————————————————————————— 终于变了一点… ...