封装一个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.构造参数,用户可以自定义配置参数, ...
随机推荐
- ubuntu的syslog为空,停止写入解决方法
修改syslog权限: chown syslog:adm syslog
- Ubuntu14.04 LTS安装不成功
北京时间2014年04月18日早8:00时,Ubuntu14.04 LTS在ubuntu官网放出,果断下之体验. 镜像为ubuntu-14.04-desktop-amd64.iso.大小为964M.M ...
- python(一)入门
1.软件环境安装和配置 首先下载属于你的操作系统的对应的python安装包 2.傻瓜化下一步下一步 我直接勾选了配置python到path变量 然后完成 3.cmd命令行中测试一把 表示环境配置成功 ...
- opcache运行时配置参数详解
PHP的opcode缓存又出 了新成员(说新不新,也有一段日子了),那就是opcache.新浪微博等都在使用,惠新宸老师强力推荐.本人最近根据官网地址 (http://www.php.net/manu ...
- VB-获取某字符在其中出现的次数
'方法1: Dim str As String " "))) '方法2: Dim n&, j& j = n = , text1.Text, "/ITEMN ...
- platform平台设备驱动简化示例代码
driver.c: #include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h& ...
- Siverlight网页应用程序中WCF通信注意事项
最近刚刚接触WCF通信,功能就是客户端点击按钮后,服务器端返回一个随机数字.在VS2010中调试的时候,通信都正常,但发布到IIS7中就没反应了,经过几天的摸索,发现WCF的配置要注意以下两点: 1. ...
- C++ 实现设计模式之观察者模式
1. 什么是观察者模式? 观察者模式(有时又被称为发布-订阅Subscribe>模式.模型-视图View>模式.源-收听者Listener>模式或从属者模式)是软件设计模式的一种.在 ...
- Timer组件
1.常用属性 Interval 用于获取或设置Timer组件Tick事件发生的时间间隔,属性值不能小于1 制作左右飘摇窗体 private void timer1_Tick(object sender ...
- Java 中正确使用 hashCode 和 equals 方法
在这篇文章中,我将告诉大家我对hashCode和equals方法的理解.我将讨论他们的默认实现,以及如何正确的重写他们.我也将使用Apache Commons提供的工具包做一个实现. 目录: hash ...