Computed kolonların EntityFramework tarafından kullanımı

Computed kolonların EntityFramework tarafından kullanımı, SqlServer’da kullandığımız computed türdeki kolonların EntityFramework tarafından kullanabilmek için Computed türde bir kolon olduğunu belirtmeniz gerekiyor yoksa bu tür alana insert update v.s. yapılamazken Computed kolon olduğunu bilemediğinden bu işlemi yapmaya çalışacak ve Exception fırlatılacaktır.

Çözüm Yolu

SqlServer'da Salary tablosunun kolonları.

Peki bu Computed kolon tanımını EntityFramework içerisinde nasıl yapıyoruz. Eğer DbFirst kullanıyorsanız herhangi bir tanımlama yapmanıza gerek yok çünkü generator zaten bu tür tanımlamaları kendisi yapmaktadır sadece yeni kolon eklediyseniz Add/Update komutlarını edmx dosyası üzerinden gerçekleştirmelisiniz.

Ama CodeFirst bir yapınız mevcut ise o zaman Alttaki gibi fluent yada Attribute olarak ilgili özelliğin(kolonun) Computed olduğunu belirtmelisiniz.

Fluent olarak yapmanız gereken tanım şu şekide;

Attribute olarak yapmanız gereken tanım ise şu şekildedir.

Total özelliğinin Attribute yada fluent yapısı üzerinden nasıl Computed olarak işaretleneceğini bu örnek kodlarımız ile görmüş olduk artık bu kolonlara EntityFramework üzerinden insert yada update işlemi setter bloğunun erişim belirleyicinin private olarak işaretlenmesinden dolayı bilinçli olarak ve üstteki tanımlamalarımızdan dolayı EntityFramework tarafından Exception fırlatılacak bir işlem yapılamayacaktır.

Kaynaklar

  • https://docs.microsoft.com/tr-tr/ef/core/modeling/relational/computed-columns
  • https://stackoverflow.com/questions/15585330/calculated-column-in-ef-code-first

Bunlar da hoşunuza gidebilir...

2 Cevaplar

  1. Samet ÇAKIR dedi ki:

    İşlemleri yapmama rağmen package manager da update database dediğimde
    Cannot alter column ‘modelx’ because it is ‘COMPUTED’.
    hatası alıyorum

Bir cevap yazın

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