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. sql 修改字段小记

    增加字段默认值: alter table 表名 ADD 字段 类型 NULL Default 0 修改字段类型: alter table 表名 alter column UnitPrice decim ...

  2. 大型B/S系统技术总结(不断更新)

    看了<淘宝技术这十年>和<大型网站系统与Java中间件实践>这些书,对大型B/S系统的构建越来越感兴趣,于是尝试收集和总结一些常用的技术手段.不过大型网站的架构是根据业务需求不 ...

  3. Linux硬链接和符号链接(转)

    Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接]  硬连接指通过索引节点来进行连接.在Li ...

  4. FireMonkey消息机制

    interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes, FMX.Forms, FMX.Plat ...

  5. HIVE中内连接和左半连接不一致问题

    一.理论 HIVE中都是按等值连接来统计的,理论上两种写法统计结果应该是一致的: 二.实际情况 但实际使用中发现两种写法会返回的结果,总会有一些差距虽然差别不大,但让人很是困惑. 三.原因 当使用jo ...

  6. Oracle分析函数之FIRST_VALUE和LAST_VALUE

    FIRST_VALUE 返回组中数据窗口的第一个值 FIRST_VALUE ( [scalar_expression )OVER ( [ partition_by_clause ] order_by_ ...

  7. mysql将多张表COUNT的数据相加

    由于数据量过大,我们将根据用户id 将数据存储在不同的表中,根据用户id模10的余数作为表的后缀.有如下十张表:test_0, test_1, ... ,test_9现在需要根据某个条件查询统计数据我 ...

  8. 8.MVC框架开发(URL路由配置和URL路由传参空值处理)

    1.ASP.NET和MVC的路由请求处理 1)ASP.NET的处理 请求---------响应请求(HttpModule)--------处理请求(HttpHandler)--------把请求的资源 ...

  9. 我的PHP之旅--数组的认识(初级)

    数组 PHP的数组与swift有些许不同,分为3类(初级,以后会涉及到多维数组和数组指针等). 枚举数组 关联数组 混合数组 枚举数组 枚举数组跟swift中的数组差不多: <?php $arr ...

  10. python 操作sqlite数据库

    '''SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说 没有独立的维护进程,所有的维护都来自于程序本身. 在python中,使用sqlite3创建数据库的连接,当我们指定的数据库文件不 ...