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

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


使用链接类

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

posted on 2015-04-01 16:56  大西瓜3721  阅读(204)  评论(0编辑  收藏  举报

导航