• 封装一个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.     }  
  • 相关阅读:
    创建ros的程序包--3
    ROS文件系统介绍--2
    安装并配置ROS环境1
    ros-indigo-desktop-full安装到ubuntu14.04
    嵌入式声卡应用分析---18
    linux用户态定时器的使用---19
    tiny4412 linux+qtopia nfs网络文件系统的挂载
    ActiveMQ
    Web.xml配置详解之context-param
    Spring MVC的多视图解析器配置及与Freemarker的集成
  • 原文地址:https://www.cnblogs.com/Alex80/p/4384387.html
Copyright © 2020-2023  润新知