Emre Kızıldaş
Published in

Emre Kızıldaş

ValueConverter Nedir? Nasıl Kullanılır — EntityFrameworkCore & .NET

Bu makalede sizlerle birlikte ValueConverter nedir kısaca bahsedeceğiz ardından doğrudan uygulama senaryosuna geçip kodlarla uğraşacağız.

ValueConverter Nedir?

ValueConverter nesnelerin değerlerinin belirtilen şekilde değiştirilerek kullanılmasına olanak sağlayan EntityFrameworkCore sınıfıdır. Bu sınıfı kullanarak nesneleriniz içerisindeki property’leri otomatik olarak değiştirebilirsiniz.

Photo by Alex Lvrs on Unsplash

Senaryo

Veri tabanınıza kaydedeceğiniz string tipindeki değişkenlerin, ön yüzden giriş değeri ne olursa olsun tamamı büyük harfle veri tabanına kaydedileceğini varsayalım. Böyle bir senaryoda ilk akla gelen ilgili property’nin getter-setter değerlerine girip; setter özelliğine ToUpper uygulamaktır. Ancak bu şekilde birden fazla değişken varsa, her birinin setter değerlerini değiştirmek yerine bir attribute eklenerek nasıl çözülür? Bunu birlikte inceleyelim.

Attribute Oluşturma

Değeri her seferinde büyük harfe çevrilecek değişkenler için bir attribute oluşturalım. AlwaysUpper bu attribute için uygun olabilecek bir isimdir.

Converter Oluşturma

Bunun için öncelikle projemizde Microsoft.EntityFrameworkCore paketinin yüklü olduğundan emin olunuz.

UpperConverter sınıfı, ValueConverter sınıfından türeyecek şekilde oluşturulmalıdır. ValueConverter sınıfında, string bir değişkenin string tipine çevrileceği anlamını taşıyan generic ibarelere yer verilmelidir.

İlgili sınıfın yapıcı metodunda bulunan 3 parametreden ilki property değerinin otomatik olarak set edileceği alanı, ikinci parametre ise getter değerini ifade etmektedir.

Extension Yazımı

Nesnelerimizin veri tabanına kaydedildiği sırada büyük harfe çevrilerek kaydedilmesini istediğimizden, EntityFramework modelimizdeki ModelBuilder sınıfına bir extension yazmamız gerekmektedir.

Bu kod parçasında özetle; ModelBuilder nesnesine yazılan extension ile veri tabanı nesneleri (entity) içerisinde yer alan propertyler içerisinde dolaşarak ilgili propertyde AlwaysUpper attribute varsa ValueConverter ayarlıyor.

Oluşturduğumuz bu extension’u DbContext nesnemiz içerisinde yer alan OnModelCreating metodu içerisinde kullanmanız gerekmektedir.

modelBuilder.UseAlwaysUpper();

Bir entity örneği olarak da aşağıdaki gibi User nesnesi kullanılabilir:

Bu sınıfta, isim ve soy isim değerleri veri tabanına kaydedilirken tamamı büyük harf olacak şekilde kaydedilmektedir.

Bu kullanımdan yola çıkarak, sizler de kendi projelerinize uygun kullanım senaryoları elde edebilirsiniz.

Aşağıdaki açık kaynak kütüphane örneği ile bir şifreleme mekanizmanısının kullanımını inceleyebilirsiniz.

Ayrıca LinkedIn hesabımdan benimle iletişime geçebilirsiniz.

--

--

Çeşitli yazılım dillerinde ve platformlarında projeler oluşturmak üzere paylaşımlarda bulunduğum kişisel blog.

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