封装一个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.构造参数,用户可以自定义配置参数, ...
随机推荐
- C# Form窗体子窗口关闭时刷新父窗体中的datagridview
解决该问题可以用委托,但是还有更简单方便的两种方法: 方法一:将主窗体实例保存到子窗体 show form2的时候设置一下 owner为form1 Form2 f2 = new Form2(); / ...
- php 开启缓冲,页面纯静态化
服务器默认不开启php缓冲区 两种方法开启 1.php.ini out_put_buffer = on 2.ob_start(); 页面纯静态化 file_put_contents()写文件 ob_s ...
- CentOS安装mplayer
据说mplayer相当于windows下的暴风影音,那么今天就来安装上mplayer. 安装的大体步骤: 安装mplayer需要安装,解码器,mplayer,皮肤. 这三个包你都可以在mplayer官 ...
- VC++对话框中添加状态栏的方法
方法一:1.添加成员变量CStatusBarCtrl m_StatusBar;2.在OnInitDialog()中加入: m_StatusBar.Create(WS_ ...
- Oracle Database does not provide any supplemental logging, which means that by default LogMiner is not usable
写在前面,在研究Oracle logmnr 的时候看到 http://www.askmaclean.com/archives/dbms_logmnr-unsupported-sqlredo.html ...
- Python守护进程(多线程开发)
本段代码主要作用是httpsqs队列的消费端守护进程,从httpsqs中取出数据,放入mongodb #!/usr/bin/python import sys,time,json,logging im ...
- 【WPF】路由事件
总结WPF中的路由事件,我将学到的内容分为四部分来逐渐掌握 第一部分:wpf中内置的路由事件 以Button的Click事件来说明内置路由事件的使用 XAML代码: <Window x:Clas ...
- hdu 3157 Crazy Circuits 有源汇和下界的最小费用流
题目链接 题意:有n个节点,m个用电器.之后输入m行每行三个整数a,b,c; 节点a为正极(或者a 为 '+'即总的正极),b为该用电器的负极(b = '-'表示总的负极),c为该用电器要正常工作最小 ...
- 【@Transactional】Spring 之注解事务 @Transactional
spring 事务注解 默认遇到throw new RuntimeException("...");会回滚 需要捕获的throw new Exception("...&q ...
- C# foreach 原理以及模拟的实现
public class Person:IEnumerable //定义一个person类 并且 实现IEnumerable 接口 (或者不用实现此接口 直接在类 //里面写个GetEnu ...