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. 国内IT技术博客对比

    今天我想就自己对用了国内几个IT行业领先的博客做一个心得体会的总结: 我总共是用了三个,第一个是新浪,第二个是CSDN,第三个是博客园: 当然期间有自己搭建过wordpress,也用了一段时间,但是感 ...

  2. 无线WEP入侵注意事项

    1.工具bt3/bt4+spoonwep2(dep安装包)+U盘/VMwmare+无线网卡(可以笔记本内置)+UltraISO+unetbootin-windows-latest.exe+2.内置网卡 ...

  3. Redhat 6.5 x64 下载地址

    http://ftp.okhysing.is/ftp/redhat/6.5/isos/x86_64/

  4. javascript进阶——分离式DOM脚本编程

    编写分离式(unobstrusive)代码意味着对HTML内容的完全分离:数据来自服务器端,javascript代码用来动态化和交互.这种分离的好处是在不同浏览器之间使用是可以完全降级或升级运行,对于 ...

  5. MySQL数据库远程访问的权限

    GRANT ALL PRIVILEGES ON *.* TO 'user'@'%'IDENTIFIED BY 'passwd' WITH GRANT OPTION;

  6. 要成为开发中最牛逼的测试,测试中最牛逼的开发。从今天起学python,写博客。--python基础学习(一)

    Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)] on win32Type & ...

  7. Convert.ToString和ToString的区别

    Convert.ToString能处理字符串为null的情况,不抛出异常. ToString方法不能处理字符串为null的情况,会抛出异常.如:“未将对象引用设置到对象的实例”.

  8. Unity3d Shader开发(三)Pass(Culling & Depth Testing)

    剔除是一种通过避免渲染背对观察者的几何体面来提高性能的优化措施.所有几何体都包含正面和反面.剔除基于大多数对象都是封闭的事实:如果你有一个立方体,你不会看到背离你的那一面(总是只有一面在你的前方),因 ...

  9. html5判断用户摇晃了手机(转)

    先来看下html5的这几个特性: 1.deviceOrientation:方向传感器数据的事件,通过监听该事件可以获取手机静态状态下的方向数据: 2.deviceMotion: 运动传感器数据事件,通 ...

  10. [转载]MongoDB学习 (五):查询操作符(Query Operators).1st

    本文地址:http://www.cnblogs.com/egger/archive/2013/05/04/3059374.html   欢迎转载 ,请保留此链接๑•́ ₃•̀๑! 查询操作符(Quer ...