Entityframework’de Enum Kullanımı

Veritabanında tinyint türünde tuttuğum verinin C# tarafından entityframework aracılığı ile enum’a çevrilmesini beklediğimde makale devamındada belirtmiş olduğum uzun hatayı aldım çözümü ise oldukça basit.

Entityframework’de Enum Kullanımı

Entityframework’un benim için en güzel özelliklerinden biri sayısal bir değerin enum değeri ile eşleştirilip bana enum türünde veriyor olmasıdır. Fakat sık kullandığım bu özelliği tekrar kullanmak istediğimde alttaki hayatı aldım.

Hata

System.InvalidOperationException : The ‘State’ property on ‘Issue’ could not be set to a ‘System.Byte’ value. You must set this property to a non-null value of type ‘IssueState’.

Bu hatayı dikkatsizlikten dolayı aldım ama hatayı aldıktan sonra sıkıntının enum türünün varsayılan olarak int türünden türediğini ve veritabanından tinyint yani byte türünden geldiğini bilince çözümün enum’u byte’dan türeyecek şeklinde değiştirince sorunun çözüldüğünü gördüm.

SqlServer’daki tinyint türünün C# karşılığı byte türüdür. SqlServer ve C# türü karşılıklarını öğrenmek için SQL SERVER <-> C# TÜRÜ KARŞILIKLARI sayfasına gözatabilirsiniz.

Sorunu gidermek için yapacağınız şey enum’unuza veritabanında kullandığınız türe karşılık gelen C# türünü yazmak. Benim sorunun çözümü için tinyint’e C#’da karşılık gelen byte türünden türeyecek şekilde ayarladıktan sonra bitiyor. Son halide şu şekilde;

 

Entityframework’de Enum Kullanımı
4.5 (90%) 8 oy

Bunlar da hoşunuza gidebilir...

Kimler Neler Demiş?

avatar

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subscribe  
Bildir