Yazılım Mimarileri ve Tasarım Desenleri Üzerine

Entity Framework Core İle In-Memory’de Çalışmak

Merhaba,

Günlük hayatta yeni bir teknolojiyi, yapıyı, yöntemi vs. öğrenirken veya tatbik ederken yahut geliştireceğiniz herhangi bir ürünün promosyonunu oluştururken yapacağınız çalışmada veritabanına ihtiyacınız varsa ve ORM olarak Entity Framework Core’u kullanacaksanız, bunun için gerçek bir veritabanı oluşturmanın ve gerekli bağlantıları kurmanın ne kadar maliyetli olduğunu biliyorsunuz kanaatindeyim. İşte bu tarz durumlarda Entity Framework Core, operasyonel açıdan birebir aynı işlemleri gerçekleştirirken veritabanı işlemlerinin fiziksel yükünü arındırabilmek ve hızlıca çalışmalarımıza odaklanabilmek için In-Memory desteğini sunmaktadır. Şimdi gelin bu desteğin nasıl kullanıldığını inceleyelim.

Öncelikle Entity Framework Core ile In-Memory’de çalışmanın ne gibi avantajları ve dezavantajları olacaktır bunlardan bahsedelim;
Avantajları

Dezavantajları

In-Memory’de tasarlanmış bir veritabanı üzerinde yapılan hızlı testler neticesinde artık uygulamanın gerçek bir veritabanına geçmeye hazır olduğu anlaşıldığı an, gerekli yapılandırmalar kolayca sağlanabilecek ve direkt fiziksel bir veritabanına bağlanılabilecektir.

Kütüphane Kurulumu
Entity Framework Core ile in-memory’de çalışabilmek için ilgili projeye Microsoft.EntityFrameworkCore kütüphanesiyle birlikte Microsoft.EntityFrameworkCore.InMemory kütüphanesinin yüklenmesi gerekmektedir.

Örnek Çalışma
İlk olarak örnek amaçlı birkaç entity model oluşturalım.
Employee;

    class Employee
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Surname { get; set; }
        public List<Customer> Customers { get; set; }
    }

Customer;

    class Customer
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public Employee Employee { get; set; }
    }

Ardından context nesnesini aşağıdaki gibi tasarlayalım.

    class ExampleContext : DbContext
    {
        public DbSet<Employee> Employees { get; set; }
        public DbSet<Customer> Customers { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseInMemoryDatabase("exampleDatabase");
        }
    }

Burada dikkat edilmesi gereken nokta 8. satırdaki ‘UseInMemoryDatabase’ fonksiyonudur. Bu fonksiyon sayesinde ilgili context’in in-memory’de depolama yapacağı bilgilendirilmektedir.

Böylece test amaçlı bellekte veritabanı sağlamış bulunmakta ve çalışmalarımızdaki ekstra yoğunluğu azaltmaktayız.

İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Exit mobile version