C# ExpandoObject (dynamic) ile MongoDB’ye veri eklemek çok kolay

C# ExpandoObject (dynamic) ile MongoDB’ye veri eklemek çok kolay. Bildiğiniz gibi mongodb’nin yeni çıkan versiyonu c# dynamic objeleriyle işlem yapmayı desteklemektedir. Bu destek bize mongodb’yi c# ortamında kullanmak için çok güzel imkanlar sunmaktadır.

ExpandoObject, üyelerinin metod ya da özelliklerinin çalışma zamanında dinamik olarak eklenebildiği objelerdir. Yani objeyi yarattıktan sonra programsal olarak, yeni özellik yeni metod ekleyebiliriz, herhangi bir class tanımı yapmamıza gerek olmadan. Bu biz yazılımcılara çok büyük bir esneklik kazandırmaktadır.

Benzer durumu javascript dilinde de görebiliriz. Herhangi bir obje yarattıp rastgele bir özelliğine erişmeye çalıştığımızda o özellik otomatik olarak yaratılır. Javascriptin yaygınlaşmasının sebebi  bu tür esnekliklere sahip olması. Aynı şey C# dilinde ExpandoObject ile sağlanabilir.

Küçük bir konsol uygulama üzerinde bu özellikleri göstermek istiyorum. Bu uygulama için Visual Studio 2015’ı kullanacağım. Enterprise ya da community, ikiside işinizi görecektir.

Bilgisayarımızda bir mongodb servisinin çalışması gerekiyor. Benim bilgisayarımda mongodb’yi servis olarak kurmuş durumdayım.

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/ sitesinde servis için nasıl kurulum yapılacağı açık açık anlatılmış.

mongo’nun komut satırını açalım. show dbs komutunu çalıştırınca, varolan databaselerimizi görebiliriz.

expandoshowdbs

Görüldüğü üzere iki tane veritabanım var. mydatabase daha önce oluşturmuş olduğum bir database.

Visual Studio 2015 ortamında, yeni bir konsol uygulaması oluşturuyorum.

MongoDB’ye c# uygulamasından erişmek için, mongodb c# driverini kurmamız gerekiyor. Kullanacağımız versiyon 2.2 olacak. Bu versiyon .net framework 4.5 ile uyumlu ve C#’ın dynamic (ExpandoObject) özelliklerini destekliyor.

MongoDB database’inin ise 3.2.7 versiyonunu kullanıyorum. Sizde de kurulu ise hangi versiyonda çalıştığınızı görmek için, mongodb komut ekranında, db.version() komutunu çalıştırabilirsiniz.

Nuget kullanarak, driver’ı kuralım:

Şimdi de kodumuzu yazalım:

Programda görüldüğü önce bir client objesi oluşturuyoruz. Sırasıyla database’e bağlanıyor ve person tablomuza erişiyoruz. Database’imizde person tablosunun olmasına gerek yok. MongoDB şemasız bir veritabanı. Kayıt insert ettiğimiz anda, MongoDB’de otomatik olarak ilgili tablo oluşturuluyor.

Programı çalıştırdıktan sonra, mongodb komut satırı ekranına dönelim.

expandoobjectresult

Görüldüğü üzere herhangi bir c# sınıfı oluşturmadan expandoobject ile kaydımızı mongodb’ye eklemiş olduk.

Yorum Gönder

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Scroll to Top