封装一个MongoDB的 asp.net 链接类
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using MongoDB;
- /// <summary>
- /// 对Mongo和MongoDatabase的包装类
- /// </summary>
- public class MyMongoDb : IDisposable
- {
- private Mongo _mongo;
- private IMongoDatabase _db;
- private static string connectionString = "Server=127.0.0.1;mydb";
- private static readonly string _connectionString = connectionString.Split(';')[0];// "Server=127.0.0.1";
- private static readonly string _dbName = connectionString.Split(';')[1];
- public MyMongoDb()
- : this(_connectionString, _dbName)
- {
- }
- public MyMongoDb(string dbName)
- : this(_connectionString, dbName)
- {
- }
- /// <summary>
- /// 构造函数。根据指定连接字符串和数据库名
- /// </summary>
- /// <param name="connectionString">连接字符串</param>
- /// <param name="dbName">数据库名,可为空,但必须在任何操作数据库之前要调用UseDb()方法</param>
- public MyMongoDb(string connectionString, string dbName)
- {
- if( string.IsNullOrEmpty(connectionString) )
- throw new ArgumentNullException("connectionString");
- _mongo = new Mongo(connectionString);
- // 立即连接 MongoDB
- _mongo.Connect();
- if( string.IsNullOrEmpty(dbName) == false )
- _db = _mongo.GetDatabase(dbName);
- }
- /// <summary>
- /// 切换到指定的数据库
- /// </summary>
- /// <param name="dbName"></param>
- /// <returns></returns>
- public IMongoDatabase UseDb(string dbName)
- {
- if( string.IsNullOrEmpty(dbName) )
- throw new ArgumentNullException("dbName");
- _db = _mongo.GetDatabase(dbName);
- return _db;
- }
- /// <summary>
- /// 获取当前连接的数据库
- /// </summary>
- public IMongoDatabase CurrentDb
- {
- get
- {
- if( _db == null )
- throw new Exception("当前连接没有指定任何数据库。请在构造函数中指定数据库名或者调用UseDb()方法切换数据库。");
- return _db;
- }
- }
- /// <summary>
- /// 获取当前连接数据库的指定集合【依据类型】
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <returns></returns>
- public IMongoCollection<T> GetCollection<T>() where T : class
- {
- return this.CurrentDb.GetCollection<T>();
- }
- /// <summary>
- /// 获取当前连接数据库的指定集合【根据指定名称】
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="name">集合名称</param>
- /// <returns></returns>
- public IMongoCollection<T> GetCollection<T>(string name) where T : class
- {
- return this.CurrentDb.GetCollection<T>(name);
- }
- public void Dispose()
- {
- if( _mongo != null ) {
- _mongo.Dispose();
- _mongo = null;
- }
- }
- }
使用链接类
- public void Insert(USER user)
- {
- using (MyMongoDb mdb = new MyMongoDb())
- {
- var collection = mdb.GetCollection<USER>();
- collection.Insert(user);
- }
封装一个MongoDB的 asp.net 链接类的更多相关文章
- 封装MongoDB的 asp.net 链接类
using System;using System.Collections.Generic;using System.Linq;using MongoDB; /// <summary>// ...
- .Net Core ORM选择之路,哪个才适合你 通用查询类封装之Mongodb篇 Snowflake(雪花算法)的JavaScript实现 【开发记录】如何在B/S项目中使用中国天气的实时天气功能 【开发记录】微信小游戏开发入门——俄罗斯方块
.Net Core ORM选择之路,哪个才适合你 因为老板的一句话公司项目需要迁移到.Net Core ,但是以前同事用的ORM不支持.Net Core 开发过程也遇到了各种坑,插入条数多了也特别 ...
- Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!
Go/Python/Erlang编程语言对比分析及示例 本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...
- 网络游戏开发-服务器(01)Asp.Net Core中的websocket,并封装一个简单的中间件
先拉开MSDN的文档,大致读一遍 (https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/websockets) WebSocket 是一 ...
- 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil
封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...
- 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,nloglogutil
封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...
- C#字符串数组排序 C#排序算法大全 C#字符串比较方法 一个.NET通用JSON解析/构建类的实现(c#) C#处理Json文件 asp.net使用Jquery+iframe传值问题
C#字符串数组排序 //排序只带字符的数组,不带数字的 private string[] aa ={ "a ", "c ", "b & ...
- 使用Java封装一个DBUtils类(反射)
刚开始学JavaWeb时,我是调用N个setter方法将从数据库中查询出的数据封装成JavaBean的,极其繁琐. 后来了解SpringJDBC后,发现它提供的接口非常简单,然后就想自己封装一个简单的 ...
- PHP封装一个通用好用的文件上传处理类
封装一个文件上传类完成基本功能如下: 1.可上传多个或单个文件 2.上传成功返回一个或多个文件名 3.上传失败则返回每个失败文件的错误信息 上传类中的基本功能: 1.构造参数,用户可以自定义配置参数, ...
随机推荐
- linux下查看端口的连接数
linux下,可以通过natstat命令来查看端口的连接状况,比如连接数 例如,查看9090端口的连接状况: 查看某个端口的连接数netstat -nat | grep -iw "9090& ...
- thinkphp autoload 命名空间自定义 namespace
使用thinkPHP过程中,一些自定义的类库和第三方类库需要找一个合适的位置放置,放到系统默认的org文件夹感觉不太好,破坏了thinkPHP的原生目录. 就看了一下官方手册,可以在模块或者应用的配置 ...
- Qt-获取网络接口信息的综合示例
在前面的文章中介绍了与 获 取 本 机 网 络 信 息 相 关 的 类 常 用 的 有 4 个 , 分 别 是 : QHostAddress, QHostInfo, QNetworkInterface ...
- PHP 类和继承
//定义一个超类 //public 和 protectd属性和方法可以继承,private不可继承. class A{ public $a =0; private $b = 1; protected ...
- 51nod1242 斐波那契数列 矩阵快速幂
1242 斐波那契数列的第N项 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 #include<stdio.h> #define mod 100000000 ...
- CentOS 最小化安装后安装桌面
通过yum的方式安装: yum groupinstall -y "Desktop" "Desktop Platform" "Desktop ...
- 2011年-CUshell编程大赛
今天群里有人在做练习时遇到一个问题,$0中的分隔符使用OFS没有成功作用,遂查到这个问题,留作备忘查看 http://bbs.chinaunix.net/thread-2319120-1-1.html
- 【BZOJ】1006: [HNOI2008]神奇的国度 弦图消除完美序列问题
1006: [HNOI2008]神奇的国度 Description K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则. 他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的 ...
- Microsoft SQL Server 2008 R2 中文安装说明
Microsoft SQL Server 2008 基本安装说明 安装SQL2008的过程与SQL2005的程序基本一样,只不过在安装的过程中部分选项有所改变,当然如果只熟悉SQL2000安装的同志来 ...
- .bat批处理脚本让cmd命令行提示符cd到工作目录 (转)
打开cmd,检查命令行提示符所在的默认位置(目录),进入该目录用notepad++创建一个文件,输入 @echo offrem 这个符号表示该行是注释.rem 进入f盘,需要先切换盘符,成功后才能进入 ...