封装一个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.构造参数,用户可以自定义配置参数, ...
随机推荐
- 第33条:用EnumMap代替序数索引
有时候,会见到利用ordinal方法来索引数组的代码.例如下面这个简化的类,表示一种烹饪用的香草: public class Herb { public enum Type { ANNUAL, PER ...
- [翻译][MVC 5 + EF 6] 10:处理并发
原文:Handling Concurrency with the Entity Framework 6 in an ASP.NET MVC 5 Application 1.并发冲突: 当一个用户编辑一 ...
- Oracle if else if for case
------------------游标+for+if else if DECLARE cursor s_cursor is SELECT * from emp;--定义游标 begin for r ...
- AngularJS(1)随笔
ng-app 指令告诉 AngularJS,<div> 元素是 AngularJS 应用程序 的"所有者". ng-model 指令把输入域的值绑定到应用程序变量 na ...
- JAVA获取当前日期以及将字符串转成指定格式的日期
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ pac ...
- 把Mvc4项目部署到虚拟目录之后找不到control想到的文件路径规范的问题
最近部署的项目的时候由于端口不够用,想到了把Mvc项目部署到虚拟目录中,结果发现图片,js设置control都找不到了.项目是mvc4+easyui开发的,大量的代码都是在js中调用control,写 ...
- Excel skills (2) -- 自动调整行宽列高
快捷键: 行宽,Alt + O + R + A; 列高,Alt + O + C + A;
- nodejs child process
//Create child processvar thread = require('child_process'); var msg = thread.fork(__dirname + '/chi ...
- C#基础|初探反射
什么是反射 我们编写的C#代码都可以编译成exe文件或dll文件.暂时先把他们叫做程序集吧,程序集中包含了很多信息.你写了一个类,类中会有字段,有属性,有方法,编译是会把这些信息保存在程序集中,暂时把 ...
- Struts2 web.xml文件配置
在导入了项目需要使用的核心jar包之后需要在web.xml中配置Struts. 1. Struts2的知识点普及: Struts2共有5类配置文件,分别罗列如下: 1), Web.xml; 在没有使用 ...