MongoDB ve C# Bir Arada Nasıl Çalışır?

MongoDB ve C# bir arada nasıl çalışıyor buna bakıyoruz.

MongoDB ile ilgili detaylı bilgileri bağlantıdaki linkten edinebilirsiniz.

İlk olarak MongoDB ile bağlantı kurabilmemiz için gerekli olan mongo csharp driver ı nuget package manager yardımıyla projemize dâhil etmemiz gerekiyor. Şuan en son sürüm 2.0.1

PM> Install-Package mongocsharpdriver

Yukarıdaki komut yardımıyla projeye dâhil etmemiz mümkün.

Projeye dâhil ettikten sonra aşağıdaki sınıf ile MongoDB C# Driver’ını nasıl kullanabileceğimize gelelim.

using MongoDB.Driver;

Yukarıdaki satır gerekli yoksa MongoDB Driver’ı kullanmak mümkün olmayacaktır. Gelelim veritabanı modelimize.

public class MongoModel : IDisposable

{

  public MongoModel()

  {

    ResetConnection();

  }

  public void ResetConnection()

  {

    this.MongoClient = new MongoClient("mongodb://10.0.0.100:27017/denemeDB");

    this.CurrentDatabase = this.MongoClient.GetDatabase("denemeDB");

  }

  public MongoClient MongoClient { get; private set; }

  public IMongoDatabase CurrentDatabase { get; private set; }

  public void Dispose()

  {

    this.MongoClient = null;

    this.CurrentDatabase = null;

  }

  public IMongoCollection<MyCollection> getMyCollection()

  {

    return this.CurrentDatabase.GetCollection<MyCollection>("MyCollection");

  }

}

Şuan benim sunucumda güvenlik özellikleri kapalı durumda bu nedenle bağlantı cümlem mongodb://ip_adresim:port/veritabanım şeklinde. Bağlantı cümleleri ile ilgili detaylı bilgiyi buraya tıklayarak alabilirsiniz. Sunucunuzu kurarken portu değiştirmezseniz varsayılan olarak port 27017 olarak ayarlanmıştır.

Yukarıdaki sınıfı projenize eklediğinizde getMyCollection() metodunun kırmızı ile altının çizili olacaktır. Bunun nedeni ise MyCollection adında bir sınıfımızın şu an için olmamasıdır.

Sıra geldi MyCollection sınıfını projemize dahil etmeye. İlk olarak using satırımız.

using MongoDB.Bson;

MongoDB veritipleri bu isim uzayının altında bulunuyor.

using System.Threading.Tasks;

Asenkron meotlarımızı bu isim uzayı sayesinde çağırabiliyoruz.

public class MyCollection

{

  public ObjectId Id { get; set; }

  public string Name { get; set; }

}

Evet şuan projemiz derlenebilir bir duruma gelmiş olmalıdır. Tabi Mongo ile ilgili şu anada kadar sadece evrak işleri yaptık diyebiliriz.

Gelelim verileri MongoDB’den getirmeye.

public async Task<List<MyCollection>> getData()

{

  List<MyCollection> listObj = new List<MyCollection>();

  listObj = await getMyCollection().Find(x => x.Name == "Deneme").ToListAsync();

  return listObj;

}

Yukarıda asenkron bir çağrı gerçekleştiriliyor. Bu metodu normal bir metotta kullanırsak listenin boş gelecektir. Asenkron çağrıları senkronlu çağırmak için aşağıdaki metottu kullanabiliriz.

public void getDataSync ()

{

  List<MyCollection> getSync = getData().Result;

}