在C#使用MongoDB


好了,有了前面的准備工作,我們可以開始在C#中使用MongoDB了。不過,由於本示例項目的代碼也不少,因此本文將只展示與MongoDB交互的相關代碼,更完整的代碼請自行查閱示例項目。

接下來,本文演示通過C#完成【客戶資料】的一些基本的數據操作,還是先來定義一個客戶資料的類型吧。

public sealed class Customer
{
    [MongoId]
    public string CustomerID { get; set; }
    public string CustomerName { get; set; }
    public string ContactName { get; set; }
    public string Address { get; set; }
    public string PostalCode { get; set; }
    public string Tel { get; set; }
}

說明:這就是一個簡單的類,而且代碼中的[MongoId]也是可以不要的(這個后面再說)。

在操作數據庫之前,我要說明一下:MongoDB在使用前,並不要求您事先創建好相應的數據庫,設計數據表結構!
在MongoDB中,沒有【表】的概念,取而代之的是【集合】,也沒有【數據記錄】的概念,取而代之的是【文檔】,我們可以把【文檔】理解成一個【對象】,任意的對象,甚至可以有復雜的嵌套層次。
因此,我們不用再寫代碼從【數據表字段】到C#類的【屬性,字段】的轉換了,現在直接就可以讀寫整個對象了。
而且MongoDB不支持Join操作,所以,如果有【關聯】操作,就需要你自己來處理。

再來定義二個變量:

private static readonly string _connectionString = "Server=127.0.0.1";

private static readonly string _dbName = "MyNorthwind";

新增記錄

public void Insert(Customer customer)
{
    customer.CustomerID = Guid.NewGuid().ToString("N");

    // 首先創建一個連接
    using( Mongo mongo = new Mongo(_connectionString) ) {

        // 打開連接
        mongo.Connect();

        // 切換到指定的數據庫
        var db = mongo.GetDatabase(_dbName);

        // 根據類型獲取相應的集合
        var collection = db.GetCollection<Customer>();

        // 向集合中插入對象
        collection.Insert(customer);
    }
}

上面的代碼中,每一行都有注釋,這里就不再解釋了。

刪除記錄

public void Delete(string customerId)
{
    using( Mongo mongo = new Mongo(_connectionString) ) {
        mongo.Connect();
        var db = mongo.GetDatabase(_dbName);
        var collection = db.GetCollection<Customer>();

        // 從集合中刪除指定的對象
        collection.Remove(x => x.CustomerID == customerId);
    }
}

更新記錄

public void Update(Customer customer)
{
    using( Mongo mongo = new Mongo(_connectionString) ) {
        mongo.Connect();
        var db = mongo.GetDatabase(_dbName);
        var collection = db.GetCollection<Customer>();

        // 更新對象
        collection.Update(customer, (x => x.CustomerID == customer.CustomerID));
    }
}

獲取記錄列表

public List<Customer> GetList(string searchWord, PagingInfo pagingInfo)
{
    using( Mongo mongo = new Mongo(_connectionString) ) {
        mongo.Connect();
        var db = mongo.GetDatabase(_dbName);
        var collection = db.GetCollection<Customer>();

        // 先創建一個查詢
        var query = from customer in collection.Linq()
                    select customer;

        // 增加查詢過濾條件
        if( string.IsNullOrEmpty(searchWord) == false )
            query = query.Where(c => c.CustomerName.Contains(searchWord) || c.Address.Contains(searchWord));

        // 先按名稱排序,再返回分頁結果.
        return query.OrderBy(x => x.CustomerName).GetPagingList<Customer>(pagingInfo);
    }
}

獲取單個對象

public Customer GetById(string customerId)
{
    using( Mongo mongo = new Mongo(_connectionString) ) {
        mongo.Connect();
        var db = mongo.GetDatabase(_dbName);
        var collection = db.GetCollection<Customer>();

        // 查詢單個對象
        return collection.FindOne(x => x.CustomerID == customerId);
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM