DBContext
Veritabanına karşılık gelen obje yapısıdır. İçerisinde tablo yapısına karşılık gelen DbSet objeleri bulundurur. DbContext Kullanarak Tablo ve Viewlara erişebiliriz.
Repository Pattern
-Veri işlem ve sorgulamaların merkezi bir yapıya çekilmesidir. Bu sayede veritabanı işlemlerimizi tekrarlı olarak iş katmanı içinde yazmak durumunda kalmamış olacağız.
-Buna ek olarak Veri katmanı ve bu katmanı kullanan iş katmanı arasında bir arabirim olarak yer alır ve bu iki katman arasında soyutlama görevini de üstlenmiş olur.
UnitOfWork
-Bu pattern, iş katmanında yapılan her değişikliğin anlık olarak database e yansıması yerine, işlemlerin toplu halde tek bir connection üzerinden gerçekleşmesini sağlar.
-Unit Of Work, toplu veritabanı işlemlerini tek seferde bir kereye mahsus execute eden ve böylece bu toplu işlem neticesinde kaç kayıtın etkilendiğini rapor olarak sunabilen bir tasarım desenidir.
It is a single transaction that involves multiple CRUD operations.
When using Repository Pattern, we access the DBContext in our repositories.
Each repository generates and maintains its instance of DBContext.
This might lead to issues since DbContext has its in-memory list of records for the entities being modified or added in a single transaction.
In such cases, when SaveChanges() fails for a repository and succeeds in the other one, it will result in database inconsistency.
To avoid this, we add a Unit of Work layer that is a centralized store for all the repositories to receive the same instance of DbContext.
UoW ensures that the operations either succeed or fail as a whole.
We omit the Rollback() method in the Unit of Work implementation, leveraging EF Core's behavior that changes persist only when calling SaveChanges().
En soldaki kısım repository kullanılmadığı durumlarda doğrudan veritabanına DbContext aracılığı ile erişilmesini göstermektedir. Sağdaki kısım ise Unit Of Work pattern kullanılarak katmanlarla ayrılan Entity Framework ve Controller bölümlerinin arasına istenildiği anda gerçek repository değil de bir mock repository yerleştirme sayesinde test edilebilirliğin kolaylaşması sağlanmaktadır.
Entity Framework ORM(Object Relational Mapping) araçlarından biridir. ORM nedir dersek: İlişkisel veritabanı ile nesneye yönelik programlama(OOP) arasında bir köprü görevi gören araçtır. Bu köprü, ilişkisel veritabanındaki bilgilerimizi yönetmek için nesne modellerimizi kullandığımız bir yapıdır. Kısaca veritabanına bizim nesnelerimizi bağlayan ve bizim için veri alışverişini yapan Microsoft tarafından geliştirilmiş bir framework’tür.
referanslar:
Hiç yorum yok:
Yorum Gönder