MongoDB系列(二):C#应用

本文介绍了如何使用C#与MongoDB进行通讯,包括添加1.9.2版本的官方驱动,设置连接字符串,理解驱动提供的常用API,以及通过Repository模式进行操作。内容涵盖驱动安装、连接数据库、数据操作和Repository模式的应用。
摘要由CSDN通过智能技术生成

前言

  上一篇文章《MongoDB系列(一):简介及安装》已经介绍了MongoDB以及其在window环境下的安装,这篇文章主要讲讲如何用C#来与MongoDB进行通讯。再次强调一下,我使用的MongoDB版本是2.6,因为2.6是我最熟悉的版本,而且我使用的GUI工具Robomongo目前还不支持3.0版本。

 

添加官方驱动

  官方驱动可以从Nuget上获取,但是这里我们不使用最新的驱动,而是使用1.9.2这个版本,个人认为该版本对MongoDB2.6的支持最好,而且目前的下载量也是最多。驱动地址:https://www.nuget.org/packages/mongocsharpdriver/1.9.2。因此,需要在程序包管理器中获取Nuget。

打开“程序包管理器中”

  

输入指令Install-Package mongocsharpdriver -Version 1.9.2,下载添加驱动

 

连接字符串

mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]]

内容

描述

mongodb://

是连接字串必须的前缀字串

username:password@

可选项,连接到数据库后会尝试验证登陆

host1

必须的指定至少一个host

:portX

可选项,默认连接到27017

/database

如果指定username:password@,连接并验证登陆指定数据库。若不指定,默认打开admin数据库。

?options

是连接选项。如果不使用/database,则前面需要加上/。所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开

 

C#驱动提供的常用API

方法

描述

InsertBatch

批量插入

Insert

单条插入

FindOneById

按Id查询

Save

保存,如果库中有记录则更新,否则做插入,按Id匹配

Remove

删除指定文档

AsQueryable

返回IQueryable<T>对象

Update

更新一个或多个文档

RemoveAll

删除所有记录

其它

 

代码说明

抽象实体类Entity

复制代码
    public abstract class EntityWithTypedId<TId>
    {
        public TId Id { get; set; }
    }

    public abstract class Entity : EntityWithTypedId<ObjectId>
    {
    }
复制代码

  MongoDB要求每个集合都需要有一个Id,即使你定义的类中没有Id字段,存数据的时候也会生成一个Id,而且Id的类型默认是使用ObjectId,当然也可以使用其他简单类型作为Id,如int。

 

核心代码封装DbContext

复制代码
    public class DbContext
    {
        private readonly MongoDatabase _db;

        public DbContext()
        {
            var client = new MongoClient("mongodb://localhost:27017");
            var server = client.GetServer();
            _db = server.GetDatabase("Temp");
        }

        public MongoCollection<T> Collection<T>() where T : Entity
        {
            var collectionName = InferCollectionNameFrom<T>();
            return _db.GetCollection<T>(collectionName);
        }

        private static string InferCollectionNameFrom<T>()
        {
            var type = typeof(T);
            return type.Name;
        }
    }
复制代码

   1. 通过连接字符串与数据库建立连接。

   2. 获取需要操作的Database,这里是Temp。

   3. 类名与Collection名一致,作为映射的约束。如果库中没有这个Collection,则创建该Collection,如果有,则操作该Collection。

 

定义一个股票类Stock,包含股票代码,股票名称,股票价格等简单类型字段以及股票粉丝复杂字段:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值