Photo by Brett Jordan on Unsplash

EF Core 7.0 ve Yenilikleri

En Çok İstenen Özellikler

EF Coreyeni özellikleriyle ve en önemlisi her yeni sürümde artan parabolik performans iyileştirmeleriyle Dapper ile birlikte .Net ekosisteminde en çok kullanılan ORM araçları içerisinde yer alıyor. Community tarafından farklı projelerde kullanıldıkça farklı isterlere cevap verebilmesi için her yeni sürümde yeni özellikler EF Core içerisine ekleniyor.

Json Columns

Geliştirdiğimiz uygulamalarda varlıkları(entity) column based bir yapıda tasarlıyor ve kullanıcı isterlerine göre sorgulamalar gerçekleştiriyoruz. Ancak geliştirdiğimiz uygulamalar çoğu zaman kendi kendine çalışan bir uygulama değil, dış sistemlerle konuşan ve veri alışverişi gerçekleştiren senaryolar barındırabiliyor. Genellikle dış sistemlerle konuşurken json tipinde veriler kullanıyoruz. Bazı senaryolarda json tipinde olan bu verileri kendi uygulamamızın kullandığı veri tabanı teknolojisinde saklamak ve sorgulamak isteyebiliyoruz. Somut bir örnek verecek olursak, satın alma işlemleri için bir payment provider kullandığımızı varsayalım. Provider kullanıldıkça satın alma işlemini gerçekleştiren kullanıcı için transaction kayıtları oluşuyor. Bu kayıtları saklayıp, kullanıcının satın alma işlemini raporlamak istediğimizde karşımıza çıkan ilk sorun bu verinin sorgulanması oluyor. Dış bir sistemden gelen veriye güvenip veri tabanı tasarımını değiştiremeyiz. Bu sebeple gelen datayı json string tipine çevirerek saklıyoruz. Veri artık string tipinde olduğu için içerisinde bulunan bilgilere göre sorgulama yapmak oldukça zahmetli bir iş haline geliyor.

Bulk CUD Operations (Create-Update-Delete Without Loading Data Into Memory)

Oldukça önemli bir özellik. Bulk operations özellikle data memory’e çekilmeden gerçekleşirse ciddi performans artışları sağlayabiliyor.
Uzun süre EF Core kullandıktan sonra Mongo kullanınca bunu farkedebiliyorsunuz.

LifeCycle Hook

ORM içerisinde bir çok olay gerçekleşir. Bu olaylar gerçekleştiğinde uygulamamız üzerinde belirtilen noktaların bilgilendirilmesi istenebilir.

Value Objects

Öneri : EF Core içeresinde DDD-style value object kullanılmalıdır.

Raw SQL Queries for Unmapped and Return Simple/Scalar Types

Şu anda ham SQL sorguları, modelde bir anahtar tanımlı olsun veya olmasın bir tür döndürmelidir. EF7'de, EF modelinde bulunmayan türleri doğrudan döndüren ham SQL sorgularına izin vermek planlanıyor.

.NET platforms and ecosystem

EF7 için planlanan çalışmaların çoğu, farklı platformlar ve etki alanlarında .NET için veri erişim deneyiminin geliştirilmesini içerir. Bu, gerektiğinde EF Core’da çalışmayı ve ayrıca .NET teknolojilerinde harika bir deneyim sağlamak için diğer alanlarda çalışmayı içerir. EF7 sürümü için aşağıdaki platformlara/teknolojilere odaklanılacaktır:

  • .Net MAUI
  • Asp.Net Core
  • Azure Synapse
  • Blazor Server
  • Blazor WebAssembly
  • Windows Forms
  • WPF

Distributed Transactions

Distributed Transections işlemleri kullanan .Net Framework uygulamaları .Net 7 ‘ye taşınabilir.

EF Core Tooling

Amaç : dotnet ef komutlarının kullanımını kolaylaştırmak ve modern platformlar ve teknolojilerle çalıştırmak.

EF Core And Graphical User

EF Core, Windows Formsve .Net MAUIgibi data bindingsenaryolarıyla iyi çalışacak şekilde tasarlanmıştır. Ancak bu teknolojiler arasındaki noktaları birleştirmek her zaman kolay değildir. EF7 için, EF Core ile veriye bağlı uygulamalar oluşturmayı kolaylaştırmak için hem EF Core hem de Visual Studio’da çalışma deneyimini geliştirmek planlanıyor.

SQLServer.Core (Woodstar)

Microsotf.Data.SqlClient, SQL Server için tam özellikli bir ADO.NETveritabanı sağlayıcısıdır. Hem .Net Corehem de .Net Frameworküzerinde çok çeşitli SQL Serverözelliklerini destekler. Bununla birlikte, davranışları arasında birçok karmaşık etkileşim bulunan büyük ve eski bir kod tabanıdır.

Azure CosmosDb Provider

EF Core 6.0 sürümünde CosmosDb için önemli geliştirmeler yapıldı. Bu geliştirmelerin ne olduğunu merak ediyorsanız .Net 6 ve yeniliklerini incelediğim makaleye buradan ulaşabilirsiniz.

Migration Experience

EF Core6.0 sürümünde migration konusunda güzel gelişmeler vardı.

Trimming

EF Core çalışırken genellikle Runtime Code Generation gerçekleştirir. Xamarin ve Blazor gibi Linker Tree Shaking veya iOS gibi dynamic compilationizin vermeyen durumlarda Runtime Code Generation sorun çıkartabiliyor.

Translate New LINQ Operators

.Net6 ile birlikte LINQ üzerine yeni yöntemler eklendi.

Enhancements to System.Data

Her yeni release’de karşımıza çıkan .Net ortamlarında Database Access Management Api olarak karşımıza çıkan low-level System.Data üzerinde bazı iyileştirmeler ve özellikle Web Api projelerinde memory allocation minimum seviyede tutmak için iyileştirmeler yapılacağı planlanıyor.

Reseacrh Data Access For Cloud-Native

EF7 geliştirilirken özellikle microservice cloud üzerinde çalışan uygulamalar için modern veri erişim yöntemlerini araştıracaklarını planlıyorlar.

Clear Path Forward From EF6

EF6 üzerinde geliştirilen uygulamaları EF7 üzerine taşırken çıkabilecek sorunları tespit etme ve bu sorunları giderme üzerine yatırım yapacaklarını planlıyorlar.

Performance

Mükemmel performance EF Core ve tüm .Net ‘in temel ilkesi haline geldi. Her sürümde performans konusunda ciddi yatırımlar yapıldı ve güzel sonuçlar elde edildi. Bu sürümde de performans konusunda araştırmalar ve iyileştirmelere yer verileceği planlanıyor.

Performance of Database Insert And Updates

Son birkaç sürümde Insert ve Update ile ilgili hem üretilen Sql cümlecikleri hem de Change-Tracking tarafında iyileştirmeler oldu.

TechEmpower Composite Score

Birkaç yıldır bir PostgreSQLveritabanına karşı .NET üzerinde TechEmpowerkıyaslamaları çalıştırılıyor. Son birkaç sürümde, hem düşük seviyeli veri erişimi hem de EF Coreiçin Fortuneskarşılaştırması önemli ölçüde geliştirildi.

Miscellaneous features

Mevcut ve gelişen uygulama gereksinimlerini karşılamak için EF Core’da sürekli iyileştirme yapılacağı planlanıyor.

--

--

Medium independent DevOps publication. Join thousands of aspiring developers and DevOps enthusiasts

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Furkan Güngör

Furkan Güngör

887 Followers

Solution Developer — I want to change the world, give me the source code.