封装一个MongoDB的 asp.net 链接类

  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. }

使用链接类

[csharp] view plaincopy

    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. }
时间: 2024-07-31 00:40:06

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

封装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

封装一个类搞定90%安卓客户端与服务器端交互

本实例封装了一个处理安卓客户端与服务器端交互的几个方法,对于中文乱码问题本实例也找到了解决方案.本例可以处理的场景如下: 1.与服务器端交互json数据. 2.Get方式与服务器端交互数据. 3.Post方式与服务器端交互数据. 4.HttpClient方式与服务器端交互数据. 5.上传文件到服务器端. 6.从服务器端下载文件. 7.从服务器端读取文本文件. 实例截图: 本篇文章将实例代码完整贴出,希望以本文作为一个交流的平台,大家集思广益封装出更好的处理类.交流地址: http://blog.

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

封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创建Logger类,完整代码如下: using NLog; using NLog.Config; using NLog.Mongo; using NLog.Targets; using System; using System.Collections.Generic; using System.IO;

1.使用C++封装一个链表类LinkList

 使用C++封装一个链表类LinkList.写出相应一个测试用例 链表需要提供 添加 修改删除 除重 合并 排序创建 销毁等接口. 不能调用库函数或者使用STL等类库 题目延伸***********逆置链表********** LinkNode.h #ifndef LINKNODE_H #define LINKNODE_H #include <iostream> class LinkNode { public: int m_idata; LinkNode* m_pnext; }; #end

Direct-X学习笔记--封装一个网格模型类

之前学习了网格模型的导入,绘制,了解了X文件等相关知识,但是,那样绘制比较麻烦,而且绘制一个模型需要好多代码,完全是面向过程的思维,这次,学习一下怎么把网格模型的导入以及绘制等功能封装在一个类中.顺便加深一下对World Transform的理解.感觉自己的3D思维还是没有培养起来,想绘制一个对象,绘制出来和想象中的位置相差甚远. 一.复习一下网格模型相关知识 网格模型就是一个我们在美术工具中制作好的资源,通过一些API接口我们可以将美术童鞋做好的模型很方便的导入程序中.我们只需要了解怎样从文件

Swift:简单封装一个工具类模板

创建模板类(封装一个类)新建一个名字叫做 Product 的类 Product.swift File 的内容 class Product { var name: String var description: String var price: Double var stock: Int init(name: String, description: String, price: Double, stock: Int) { self.name = name self.description =

block传值以及利用block封装一个网络请求类

1.block在俩个UIViewController间传值 最近刚学了几招block 的高级用法,其实就是利用block语法在俩个UIViewController之间传值,在这里分享给初学者,同时也方便我自己理解.我们知道UINavigationController类管理UIViewController的时候,利用的是"栈"的思想,在这里不做过多解释,切入正题,假设我们现在有俩个UIViewController,viewC1和viewC2,viewC1比viewC2先进入到UINavi

爬取当当网的图书信息之封装一个工具类

把这个类名取为Tool 封装一个下载网页的方法GetHtml public static string GetHtml(string url) { try { WebClient wb = new WebClient(); return wb.DownloadString(url); } catch { return ""; } } 传入的是这个网页的URL,这个方法能帮我们把网页下载下来封装一个匹配图书类URL的的方法 public static ArrayList GetList(

Python+Selenium进阶版(八)- Python自定义封装一个简单的Log类

目标:如何写一个Python日志类,用来输出不同级别的日志信息到本地文件夹下的日志文件里. 练习场景: 我们需要封装一个简单的日志类,主要有以下内容: 1.生成的日志文件格式是 年月日分秒.log 2.生成的XXX.log文件存储在项目根目录下Logs文件夹下 3.这个日志类,支持INFO,ERROR两种日志级别 4.日志里,每行日志输出,时间日期+执行类名称+日志级别+日志描述 解决思路: 1.在根目录下新建一个Logs的文件夹,获取这个Log的相对路径: 2.日志的保存命名,需要系统时间: