本篇文章将带领大家实现一个小的 RavenDB 案例程序,要求是这样的:实现一个 ToDoList 程序,可以对它进行新增、修改。下面我们开始吧!

新建项目

我们将这个项目新建为控制台应用程序。我们在 VS 中创建一个名为 Rvn 的控制台应用程序。项目新建成功后,我们需要在项目中安装 RavenDB 的包。在 NuGet b包管理其中查找 RavenDB.Client 包并安装它。完成这些步骤之后,我们在 Program 代码的头部引入 Raven.Client.Documents
到这里我们已经完成了代码的第一步工作,下面我们将会通过创建一个 DocumentStore 实例并对其进行配置来完成对 RavenDB 的链接工作,代码如下:

var store = new DocumentStore
{Urls = new[] { "http://localhost:8080" },Database = "Tasks"
};

在上面的代码中我们通过 DocumentStore 实例指定了 RavenDB 节点的链接地址,以及要链接的数据库。目前我们只需要这两个属性就足够了,其他属性我将在后续的章节中讲解。设置完之后,我们在 RavenDB Studio 中创建 Tasks 数据库,具体怎么创建我就不多说了,有不会的小伙伴请去查看上一篇文章。

新增

既然要操作 RavenDB 肯定就少不了实体类,虽然说 RavenDB 使用的是完全动态的数据库,但是在实际开发中大多数情况都需要使用实体类。因此我们先来定义一下实体类,代码如下:

public class ToDoTask
{public string Id { get; set; }public string Task { get; set; }public bool Completed { get; set; }public DateTime DueDate { get; set; }
}

接着我们来实现新增的功能,代码操作 RavenDB 的流程其实和操作关系型数据库的流程一样:

  1. 打开会话;
  2. 创建新的 ToDoTask 实体对象;
  3. 将实体对象传入会话中;
  4. 执行保存操作;
  5. 释放会话。

将上述步骤翻译成代码,如下所示:

using (var session = store.OpenSession())
{var task = new ToDoTask{DueDate = DateTime.Today.AddDays(1),Task = "Buy milk"};session.Store(task);session.SaveChanges();
}

上面的代码中,首先打开新会话并创建了新的 ToDoTask 实体对象. 然后将任务存储在会话中并调用 SaveChanges 方法将会话中的所有更改保存到 RavenDB 中。

修改

修改的实现代码和新增的代码类似,代码如下:

using (var session = store.OpenSession())
{var task = session.Load<ToDoTask>("ToDoTasks/1-A");task.Completed = true;session.SaveChanges();
}

注意

  1. 在开发中除非特殊的情况下我们才会每执行一次 CURD 就去执行一次 SaveChange 方法,大部分情况我们会将同一个会话中的所有操作执行完后采取执行 SaveChange 方法,在这里我们不需要担心如果在中途出先异常,数据只保存了部分的问题,这时因为 RavenDB 具有其他 NoSQL 数据库所没有的真正的事务,要么全部保存成功,要么全部保存失败,不会出现部分成功和部分失败的问题。
  2. 如果我们没有修改数据,但是调用了 SaveChange 方法,那么不会向库中提交任何数据,这是因为 RavenDB 客户端会检测到所提交的数据和库中存储的一样,因此不会产生保存操作。
  3. 因为 RavenDB 的文档会话实现了 Unit of Work 和 Identity Map 设计模式,因此对于任意复杂程度的内容我们不需要手动跟踪对象的更改以及决定要保存对象的哪些内容,这样就减少了网络请求。

RavenDB起步--第一个 RavenDB 程序相关推荐

  1. 一个软件公司需要多少前端_制作一个小程序商城需要多少钱?开发小程序公司哪家强?...

    搭建小程序商城能更好的为商家打造私域粉丝池,形成私域流量,因此,微信小程序自然成为了企业商家的首选. 随着线上的快速发展,微信小程序能力的升级,使小程序也存在多种类型,例如电商类.资讯类.预约类等等, ...

  2. python程序下载_Python 基础起步 (二) 5分钟内下载环境并运行第一个Python 程序

    下载并安装Anaconda 好啦,作为小白,我们的第一步是安装能够运行Python的环境,所谓环境就是指我们要安装一个软件,之后就能用它来写Python代码 (觉得我对环境解释特别智障的请绕行,我们是 ...

  3. 小程序工程化实践(上篇)-- 手把手教你撸一个小程序 webpack 插件,一个例子带你熟悉 webpack 工作流程...

    本文基于 webpack 4 和 babel 7,Mac OS,VS Code 小程序开发现状: 小程序开发者工具不好用,官方对 npm 的支持有限,缺少对 webpack, babel 等前端常用工 ...

  4. 是非人生 — 一个菜鸟程序员的5年职场路 第14节

    是非人生 - 一个菜鸟程序员的5年职场路第14节作者: 花8 天涯IT: http://cache.tianya.cn/publicforum/content/itinfo/1/77229.shtml ...

  5. 是非人生 — 一个菜鸟程序员的5年职场路 第4节

    是非人生 - 一个菜鸟程序员的5年职场路第4节作者: 花8 天涯IT: http://cache.tianya.cn/publicforum/content/itinfo/1/77229.shtml ...

  6. 是非人生——一个菜鸟程序员的5年人生路

    注意:!!!!!!!!!!!! 文章可能还在连载.请关注: http://topic.csdn.net/u/20080318/10/e4543fc2-d726-465c-bc95-fea14b92db ...

  7. 做一个小程序要多少钱?

    ​微信小程序相信大家都已经不会陌生,我们的日常生活中也会经常使用到微信小程序,从我们出门逛街买奶茶,坐公交刷地铁,偷懒不出门买菜,都会熟练的打开微信小程序- 那么问题来了,做一个小程序到底要多少钱? ...

  8. 程序员如何成长?如何进阶?——一个老程序员的经验分享2

    准备好了,我们需要开始起步了,所有的理想都是美好的,对于新人来说,这种美好都是原始动力,它不该被抹杀其作用,我很不同意一些人在开始就打击新人的这种出于理想主义的冲动,所以,我在这里要告诉那些新人如何利 ...

  9. 独家 | 手把手教你用scrapy制作一个小程序 !(附代码)

    目录 一.前言 二.原理 2.1 爬取流程 2.2 各部块的解释 2.3 scrapy数据流的分析 三.理解 四.实战 4.1 首先是安装scrapy 4.2 建立项目和下载pycharm以及pych ...

最新文章

  1. Vue.js@2.6.10更新内置错误处机制,Fundebug同步支持相应错误监控
  2. 数模学习笔记——微分方程(传染病模型)
  3. VTK:定向圆柱体用法实战
  4. JDK core dump分析
  5. substring用法
  6. 讲一讲应用服务的新鲜事儿
  7. java 输出定位代码行_指定一个.java文件,输出其代码行数
  8. mysql添加有效值_物理数据库设计 - 限定列的有效值
  9. 数据:以太坊2.0合约24小时新增2.04万ETH
  10. LintCode-73.前序遍历和中序遍历树构造二叉树
  11. 阿里 P6 和 P7 的主要区别是什么?
  12. matlab用三角分解法解函数
  13. linux 应用程序 dma,Linux之DMA API(上)
  14. UE4联机多人游戏基本设置
  15. 真真正正解决VScode不能安装插件问题、无法连接到应用商城问题
  16. uniapp选中多张图片或者视频(多图上传)
  17. 佳能EOS20D本站真机评测 下
  18. 向SQL Server数据库中插入日期型数据
  19. Illustrator 教程:如何在 Illustrator 中创建无缝平铺图案?
  20. 动态ip导致的Discuz!Database Error解决方法

热门文章

  1. Ubuntu命令卸载软件
  2. PLSQL如何调出sql美化器按钮
  3. 如何用一个U盘中装多个iso安装镜像包让一个U盘当N个启动盘,用U盘做一个虚拟光驱可以选择ISO载入到虚拟光驱,多系统启动U盘解决方案
  4. 在线markdown编辑器生成甘特图,太爱了
  5. 软件版本通用命名规范
  6. 如何开发旅游商城系统?
  7. SOHOy一族怎么样网上赚钱
  8. 修改CentOS 7终端的背景色和字体颜色
  9. 双目相机与IMU联合标定
  10. Java实现2048小游戏(直接拿走运行)