封装一个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.构造参数,用户可以自定义配置参数, ...
随机推荐
- sql 修改字段小记
增加字段默认值: alter table 表名 ADD 字段 类型 NULL Default 0 修改字段类型: alter table 表名 alter column UnitPrice decim ...
- 大型B/S系统技术总结(不断更新)
看了<淘宝技术这十年>和<大型网站系统与Java中间件实践>这些书,对大型B/S系统的构建越来越感兴趣,于是尝试收集和总结一些常用的技术手段.不过大型网站的架构是根据业务需求不 ...
- Linux硬链接和符号链接(转)
Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接] 硬连接指通过索引节点来进行连接.在Li ...
- FireMonkey消息机制
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes, FMX.Forms, FMX.Plat ...
- HIVE中内连接和左半连接不一致问题
一.理论 HIVE中都是按等值连接来统计的,理论上两种写法统计结果应该是一致的: 二.实际情况 但实际使用中发现两种写法会返回的结果,总会有一些差距虽然差别不大,但让人很是困惑. 三.原因 当使用jo ...
- Oracle分析函数之FIRST_VALUE和LAST_VALUE
FIRST_VALUE 返回组中数据窗口的第一个值 FIRST_VALUE ( [scalar_expression )OVER ( [ partition_by_clause ] order_by_ ...
- mysql将多张表COUNT的数据相加
由于数据量过大,我们将根据用户id 将数据存储在不同的表中,根据用户id模10的余数作为表的后缀.有如下十张表:test_0, test_1, ... ,test_9现在需要根据某个条件查询统计数据我 ...
- 8.MVC框架开发(URL路由配置和URL路由传参空值处理)
1.ASP.NET和MVC的路由请求处理 1)ASP.NET的处理 请求---------响应请求(HttpModule)--------处理请求(HttpHandler)--------把请求的资源 ...
- 我的PHP之旅--数组的认识(初级)
数组 PHP的数组与swift有些许不同,分为3类(初级,以后会涉及到多维数组和数组指针等). 枚举数组 关联数组 混合数组 枚举数组 枚举数组跟swift中的数组差不多: <?php $arr ...
- python 操作sqlite数据库
'''SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说 没有独立的维护进程,所有的维护都来自于程序本身. 在python中,使用sqlite3创建数据库的连接,当我们指定的数据库文件不 ...