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. ASP.NET DataList嵌套实现评论效果

    问题: Datalist1显示say这个表的数据 然后想在Datalist1中嵌套一个Datalist2用于显示对应的评论表2的 sayID对应表1的id,若表2中找不到对应sayId则在对应的Dat ...

  2. winfrom 多语言切换

    1.首先将窗体的“Localizable”属性置为“True”,然后将“Language”属性置为自己想要的语言,点击重新生成项目 例如:置为“中文”,以及“英文”.当每次置为不同的语言并重新生成项目 ...

  3. R语言的一些笔记

    (1)包中函数必须在NAMESPACE中进行标记导出,否则就不认识了: 例如叫做rtest.Model.LogisticreRression 就能识别,而叫做Model.LogisticreRress ...

  4. WINIO64位模拟键鼠操作

    最近玩游戏有点入迷,心急升级经验,于是某天开始"挂尸体",一系列手动操作之后决定写一个外挂,模拟一系列键盘和鼠标操作,没做过游戏winform也用得少,开始以为只要简单调用winA ...

  5. JVM里面hashtable和hashmap实现原理

    JVM里面hashtable和hashmap实现原理   文章分类:Java编程 转载 在hashtable和hashmap是java里面常见的容器类, 是Java.uitl包下面的类, 那么Hash ...

  6. SpringMVC最基础配置

    SpringMVC和Struts2一样,是前后台的一个粘合剂,struts2用得比较熟悉了,现在来配置一下SpringMVC,看看其最基础配置和基本使用.SpriingMVC不是太难,学习成本不高,现 ...

  7. matlab vs python

    (参考)从下图可以清晰看到matlab和python之间的区别 Python是一种编程语言,但与其他变成语言的不同在于:python具有许多的扩展库(通过import引入) Matlab是集合计算环境 ...

  8. centos 卸载vsftpd方法

    centos 卸载vsftpd方法 在服务器上安装了vsftpd,配置出错需要卸载vsftpd.卸载vsftpd的命令如下: 1 [root@localhost ~]# rpm -aq vsftpd2 ...

  9. margin负值的使用

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. [转载]MongoDB学习 (六):查询

    本文地址:http://www.cnblogs.com/egger/archive/2013/06/14/3135847.html  欢迎转载 ,请保留此链接๑•́ ₃•̀๑! 本文将介绍操作符的使用 ...