Codefirst olarak oluşturmuş olduğum Entity Framework Database modelimde sınıf içerisine tablo’da karşılığı olmayan bir property tanımladım normalde sadece get olarak tanımlanan propertyler yoksayılıyor fakat set tanımlaması yer alırsa iş değişiyor.
Entity Framework Code first ile oluşturulan sınıflarda bazı propert’ileri yoksayma
Codefirst olarak oluşturmuş olduğum Entity Framework
Database modelimde sınıf içerisine tablo’da karşılığı olmayan bir property tanımladım normalde sadece get
olarak tanımlanan propertyler yoksayılıyor fakat set tanımlaması yer alırsa iş değişiyor. Eğer set
tanımlaması yer alıyorsa property
‘de ve karşılığı db’de ilgili tablo’da yoksa o zaman runtime’da hata alma olasılığınız yüksektir.
Şimdi bir örnek ile bu durumu açıklamaya çalışalım Ad
ve Soyad
alanı ayrı olan bir table class modelimiz olduğunu varsayalım tablomuzun adıda Musteri
olsun sürekli olarak son kullanıcı’ya Ad Soyad birleşik göstermek için toplama usülü birleştirmektense bir property tanımlayıp get tanımlamasında bu işlemi tek sefer yapıp projede ilgili tüm yerlerde rahatlıkla kullanabilirsiniz bu şekilde bir tanımlama ile Entity Framework
sadece get tanımı yapıldığından hata vermeyecektir.
Sadece get Tanımı yer alan Adsoyad Property’isi
1 2 3 4 5 6 7 8 9 10 | public class Musteri { public string Ad { set; get; } public string Soyad{ set; get; } public string Adsoyad { get{ return string.Format("{0} {1}", Ad, Soyad); } } } |
Yukarıdaki kodda herhangi bir hata yok ve daha öncede belirttiğim gibi Adsoyad alanının tabloda karşılığı olmamasına rağmen sadece get
tanımı kullandığımızdan hata vermeyecektir.
Ama eğer set
tanımıda olsaydı Adsoyad’da o zaman aşağıdaki gibi NotMapped
attribute’ü ile yoksayarak hata almaktan kurtulabiliriz.
1 2 3 4 5 6 7 | public class Musteri { public string Ad { set; get; } public string Soyad{ set; get; } [NotMapped] public string Adsoyad { get; set; } } |