C# WinForms ve Mono GTK SQL ve XML Gibi DataSource Tipleri Yazılım ve Sistem Güvenliği

Mongo 2.7 ile C# Hazır Yapılarım

Entity Framework gibi ORM araçlarına alışanlar için NoSQL öğrenmede ve kullanmada en zor gelen kısmı kolaylıklardan faydalanamıyor olmamızdır. Görsel bir diagram NoSQL mantığı gereği kurulmamalıdır çünkü ilişkisel bir veritabanı değildir. Bundan sonraki çalışmalarımda kullanmak üzere hazırladığım temel işlemler sınıfıma ait kodları aşağıda paylaşacağım.

 

IMongoCollection<BsonDocument> collection;
MongoClient client;
IMongoDatabase db;
public noSQL(string dbName, string colName)
{
    client = new MongoClient();
    db = client.GetDatabase(dbName);
    collection = db.GetCollection<BsonDocument>(colName);
}

public IEnumerable<BsonDocument> findAll()
{
    List<BsonDocument> result = new List<BsonDocument>();
    result = collection.Find(new BsonDocument()).ToList();

    return result;
}

public IEnumerable<BsonDocument> where(FilterDefinition<BsonDocument> filter)
{
    List<BsonDocument> result = collection.Find(filter).ToList();
    return result;
}

public bool insert(BsonDocument doc)
{
    bool result = false;
    try
    {
        collection.InsertOne(doc);
        result = true;
    }
    catch { }
    return result;
}

public async Task<bool> insertAll(IEnumerable<BsonDocument> docs)
{
    try
    {
        await collection.InsertManyAsync(docs);
        return true;
    }
    catch {
        return false;
    }
    
}

public bool update(BsonDocument find, BsonDocument newdoc)
{
    bool result = false;
    try
    {
        collection.UpdateOne(find,newdoc);
        result = true;
    }
    catch { }
    return result;
}

public async Task<bool> updateAll(BsonDocument find, BsonDocument newdoc)
{
    try
    {
        await collection.UpdateManyAsync(find, newdoc);
        return true;
    }
    catch
    {
        return false;
    }
}

public bool delete(BsonDocument find)
{
    bool result = false;
    try
    {
        collection.DeleteOne(find);
        result = true;
    }
    catch { }
    return result;
}

public async Task<bool> deleteAll(BsonDocument find)
{
    try
    {
        await collection.DeleteManyAsync(find);
        return true;
    }
    catch
    {
        return false;
    }
}

 

Kolleksiyonlar arasındaki ilişkilendirmenin modeli şu şekilde oluşturulur.

 

using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace blabla.Models
{
    public class applications
    {
        [BsonId]
        public ObjectId Id { get; set; }
        [BsonElement]
        public string Name { get; set; }
        [BsonElement]
        public DateTime Datex { get; set; }
        [BsonElement]
        public bool isActive { get; set; }
        [BsonElement]
        public ICollection<customers> customers { get; set; } //ilişki
    }

    public class customers
    {
        [BsonId]
        public ObjectId Id { get; set; }

    }
}

 

Sorgulamaya örnek vermek gerekirse eğer

//yapıcı
noSQL db = new noSQL("veritabani", "kolleksiyon");

//findAll metodu
List<BsonDocument> dbresult = db.findAll();
var clearData = BsonSerializer.Deserialize<admins>(dbresult);

//where metodu
var builder = Builders<BsonDocument>.Filter;
var filtre = builder.Eq("username", uname) & builder.Eq("password", passwd);
BsonDocument wheredbresult = db.where(filtre).First();
var clearData = BsonSerializer.Deserialize<users>(wheredbresult);

//insert metodu
BsonDocument doc = new BsonDocument{
   {"username", "deneme"},
   {"password", "deneme"}
};
db.insert(doc);

//update metodou
BsonDocument eski= wheredbresult; //where ile sorguladığım örnekten
BsonDocument yeni= new BsonDocument{
   {"username", "denedi"},
   {"password", "ehbeya"}
};
db.update(eski, ehbeya);

//delete metodu
db.delete(wheredbresult);

 

 

Bir cevap yazın

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