1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using MongoDB;
  5. /// <summary>
  6. /// 对Mongo和MongoDatabase的包装类
  7. /// </summary>
  8. public class MyMongoDb : IDisposable
  9. {
  10. private Mongo _mongo;
  11. private IMongoDatabase _db;
  12. private static string connectionString = "Server=127.0.0.1;mydb";
  13. private static readonly string _connectionString = connectionString.Split(';')[0];// "Server=127.0.0.1";
  14. private static readonly string _dbName = connectionString.Split(';')[1];
  15. public MyMongoDb()
  16. : this(_connectionString, _dbName)
  17. {
  18. }
  19. public MyMongoDb(string dbName)
  20. : this(_connectionString, dbName)
  21. {
  22. }
  23. /// <summary>
  24. /// 构造函数。根据指定连接字符串和数据库名
  25. /// </summary>
  26. /// <param name="connectionString">连接字符串</param>
  27. /// <param name="dbName">数据库名,可为空,但必须在任何操作数据库之前要调用UseDb()方法</param>
  28. public MyMongoDb(string connectionString, string dbName)
  29. {
  30. if( string.IsNullOrEmpty(connectionString) )
  31. throw new ArgumentNullException("connectionString");
  32. _mongo = new Mongo(connectionString);
  33. // 立即连接 MongoDB
  34. _mongo.Connect();
  35. if( string.IsNullOrEmpty(dbName) == false )
  36. _db = _mongo.GetDatabase(dbName);
  37. }
  38. /// <summary>
  39. /// 切换到指定的数据库
  40. /// </summary>
  41. /// <param name="dbName"></param>
  42. /// <returns></returns>
  43. public IMongoDatabase UseDb(string dbName)
  44. {
  45. if( string.IsNullOrEmpty(dbName) )
  46. throw new ArgumentNullException("dbName");
  47. _db = _mongo.GetDatabase(dbName);
  48. return _db;
  49. }
  50. /// <summary>
  51. /// 获取当前连接的数据库
  52. /// </summary>
  53. public IMongoDatabase CurrentDb
  54. {
  55. get
  56. {
  57. if( _db == null )
  58. throw new Exception("当前连接没有指定任何数据库。请在构造函数中指定数据库名或者调用UseDb()方法切换数据库。");
  59. return _db;
  60. }
  61. }
  62. /// <summary>
  63. /// 获取当前连接数据库的指定集合【依据类型】
  64. /// </summary>
  65. /// <typeparam name="T"></typeparam>
  66. /// <returns></returns>
  67. public IMongoCollection<T> GetCollection<T>() where T : class
  68. {
  69. return this.CurrentDb.GetCollection<T>();
  70. }
  71. /// <summary>
  72. /// 获取当前连接数据库的指定集合【根据指定名称】
  73. /// </summary>
  74. /// <typeparam name="T"></typeparam>
  75. /// <param name="name">集合名称</param>
  76. /// <returns></returns>
  77. public IMongoCollection<T> GetCollection<T>(string name) where T : class
  78. {
  79. return this.CurrentDb.GetCollection<T>(name);
  80. }
  81. public void Dispose()
  82. {
  83. if( _mongo != null ) {
  84. _mongo.Dispose();
  85. _mongo = null;
  86. }
  87. }
  88. }

使用链接类

    1. public void Insert(USER user)
    2. {
    3. using (MyMongoDb mdb = new MyMongoDb())
    4. {
    5. var collection = mdb.GetCollection<USER>();
    6. collection.Insert(user);
    7. }

封装一个MongoDB的 asp.net 链接类的更多相关文章

  1. 封装MongoDB的 asp.net 链接类

    using System;using System.Collections.Generic;using System.Linq;using MongoDB; /// <summary>// ...

  2. .Net Core ORM选择之路,哪个才适合你 通用查询类封装之Mongodb篇 Snowflake(雪花算法)的JavaScript实现 【开发记录】如何在B/S项目中使用中国天气的实时天气功能 【开发记录】微信小游戏开发入门——俄罗斯方块

    .Net Core ORM选择之路,哪个才适合你   因为老板的一句话公司项目需要迁移到.Net Core ,但是以前同事用的ORM不支持.Net Core 开发过程也遇到了各种坑,插入条数多了也特别 ...

  3. Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!

    Go/Python/Erlang编程语言对比分析及示例   本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...

  4. 网络游戏开发-服务器(01)Asp.Net Core中的websocket,并封装一个简单的中间件

    先拉开MSDN的文档,大致读一遍 (https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/websockets) WebSocket 是一 ...

  5. 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil

    封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...

  6. 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,nloglogutil

    封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...

  7. C#字符串数组排序 C#排序算法大全 C#字符串比较方法 一个.NET通用JSON解析/构建类的实现(c#) C#处理Json文件 asp.net使用Jquery+iframe传值问题

    C#字符串数组排序   //排序只带字符的数组,不带数字的 private   string[]   aa   ={ "a ", "c ", "b & ...

  8. 使用Java封装一个DBUtils类(反射)

    刚开始学JavaWeb时,我是调用N个setter方法将从数据库中查询出的数据封装成JavaBean的,极其繁琐. 后来了解SpringJDBC后,发现它提供的接口非常简单,然后就想自己封装一个简单的 ...

  9. PHP封装一个通用好用的文件上传处理类

    封装一个文件上传类完成基本功能如下: 1.可上传多个或单个文件 2.上传成功返回一个或多个文件名 3.上传失败则返回每个失败文件的错误信息 上传类中的基本功能: 1.构造参数,用户可以自定义配置参数, ...

随机推荐

  1. 九度OJ 1447 最短路 1008 最短路径问题

    题目地址:http://ac.jobdu.com/problem.php?pid=1447 题目描述: 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上 ...

  2. 九度OJ 1408 吃豆机器人 -- 动态规划

    题目地址:http://ac.jobdu.com/problem.php?pid=1408 题目描述: 淘宝公司内部有许多新鲜的小玩具,例如淘宝智能机器人.小时候,大家都玩过那个吃豆子的游戏吧,这机器 ...

  3. OpenJudge 2813 画家问题 / Poj 1681 Painter's Problem

    1.链接地址: http://bailian.openjudge.cn/practice/2813 http://poj.org/problem?id=1681 2.题目: 总时间限制: 1000ms ...

  4. 一台Ubuntu server上安装多实例MySQL

    受环境所迫,在一台Ubuntu server上安装多个实例MySQL. 手动安装MySQL 环境:Ubuntu server 11.10 64bit + mysql-5.5.17-linux2.6-x ...

  5. javascript变量

    5种简单数据类型(基本数据类型) undefined  null  boolean  number  string (还有一种复杂的数据类型:object) 变量的两种不同的数据类型:基本类型(简单数 ...

  6. Python守护进程(多线程开发)

    本段代码主要作用是httpsqs队列的消费端守护进程,从httpsqs中取出数据,放入mongodb #!/usr/bin/python import sys,time,json,logging im ...

  7. hdu 2243 考研路茫茫——单词情结 ac自动机+矩阵快速幂

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=2243 题意:给定N(1<= N < 6)个长度不超过5的词根,问长度不超过L(L <23 ...

  8. 【转】iOS 9自带苹果式省电模式 依然软硬兼施

    非本人总结,转自:http://news.91.com/apple/1506/21837672.html 说好的改善和优化,iOS 9真的带来了.且不说那些经过改善的功能,iOS 9 推出的低功耗模式 ...

  9. <四> jQuery 事件

    $(document).ready(function) 将函数绑定到文档的就绪事件(当文档完成加载时) $(selector).click(function) 触发或将函数绑定到被选元素的点击事件 $ ...

  10. 服务器环境搭建系列(四)-mysql篇

    1.按照上一篇服务器环境搭建系列(三)-JDK篇中的方法检查系统是否已经预装Mysql并卸载. 2.下载mysql,这里是MySQL-server-5.5.25-1.linux2.6.x86_64.r ...