繼續查找發現了另一篇文章。只做重點翻譯:
當你只需要一個用戶,它在連接字符串中指定這是可能的。
var connectionString ="mongodb://user1:password1@localhost/test"; var mongoClient = newMongoClient(connectionString); 注意: 如果你不指定一個數據庫連接字符串,默認的數據庫是“admin”數據庫.
看到這里心里狂喜,終于可以進行配置文件的設置了,但是發現c#的驅動并不支持這樣的編寫,于是又是一個失落。
鏈接數據庫,官方提供了兩種線程安全的方式,一個是MongoClient, 另一個是MongoServer,都是線程安全的,自動進行鎖定的。
利用服務端類鏈接數據庫
// Create server settings to passconnection string, timeout, etc.
MongoServerSettingssettings =newMongoServerSettings();
settings.Server = new MongoServerAddress("localhost",27017);
// Create server object tocommunicate with our server
MongoServer server = new MongoServer(settings);
// Get our databaseinstance to reach collections and data
var database = server.GetDatabase("MessageDB");
客戶端類鏈接數據庫的實例
var client = new MongoClient("mongodb://localhost:27017"); var server = client.GetServer(); var database = server.GetDatabase("foo"); var collection = database.GetCollection("bar");
以上的兩種鏈接方式我都做個測試。并且都可以用。這是一般更傾向于客戶端的鏈接方式。
通過查找Api,發現客戶端的類的構造方法還有其他的
public MongoClient(); public MongoClient(MongoClientSettingssettings); public MongoClient(MongoUrl url); public MongoClient(stringconnectionString);
我們通常用的是string字符串的鏈接,這次對MongoClientSettings進行的深度的查找調用發MongoClientSettings 是可以進行更多的參數設置的,和Option類似,于是找到了解決方案,通過配置文件對MongoClientSettings進行參數設置。
默認情況下,最大鏈接池是100,最小是0,數據庫鏈接是本地的。下面我們看測試
MongoClientSettings settingsclient = newMongoClientSettings();//實例化客戶端設置類
紅色劃線部分是默認的參數,當我們不填寫任何參數,驅動程序是進行默認的參數設置的。
通過客戶端類的參數設置可以發現已經有所不同了。
那代碼是如何編寫的呢
#region 讀取配置文件信息 //獲取鏈接池大小 int connectionPool =Convert.ToInt32(ConfigurationManager.AppSettings["connectionPool"]); int minpool =Convert.ToInt32(ConfigurationManager.AppSettings["minpool"]); string hostname =ConfigurationManager.AppSettings["hostname"]; Int32 port =Convert.ToInt32(ConfigurationManager.AppSettings["port"]); string database =ConfigurationManager.AppSettings["database"]; #endregion if (String.IsNullOrEmpty(ConnectionString)) { throw newArgumentNullException("Connection string not found."); } #region 客戶端類設置 MongoServerAddress ipaddress = newMongoServerAddress(hostname, port);//設置服務器的ip和端口 MongoClientSettings settingsclient= new MongoClientSettings();//實例化客戶端設置類 settingsclient.Server =ipaddress;//端口賦值 settingsclient.MaxConnectionPoolSize = connectionPool; settingsclient.MinConnectionPoolSize = minpool; settingsclient.ConnectionMode =0;//鏈接模式設置 // MongoUrl url=newMongoUrl(ConnectionString); MongoClient client = newMongoClient(settingsclient);//調用客戶端類構造函數設置參數 MongoServer server =client.GetServer();//服務端獲取客戶端參數 DB =server.GetDatabase(database);//獲取數據庫名稱 #endregion
剛開始我也是不知道如何進行參數賦值,只是在一步步的操作中發現參數是有類型的,一些類型是一些引用類,就需要實例化賦值。所以才有最后看起來很多的參數。
配置文件中的信息
當然了客戶端的方式寫出來了。服務端也就容易的很多了
#region 服務端鏈接設置 MongoServerSettings mongoSetting =new MongoServerSettings(); //mongoSetting.Server = newMongoServerAddress(ConnectionString, connectionPool); mongoSetting.MaxConnectionPoolSize= connectionPool;//設定最大連接池 mongoSetting.Server = newMongoServerAddress(hostname, port); MongoServer server =MongoServer.Create(mongoSetting);//創建連接數據文件 DB = server.GetDatabase(database); #endregion
由于該數據庫的參考資料比較少,所以多數資料還是外文,剛開始看到很是驚訝,如此多的英語能看的明白么。但是只要心境平靜,一切都是可以的。通過基本的查找和一些外文論壇了解的基本的設置。很像SQL的設置,但是又不同,需要進行代碼設置,這是這個代碼的參數可以寫在配置文件中。這次的資料查找我深刻認識到,英語是非常非常重要的工具,如果你想更深入的了解,英語是必不可少的利器。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com