Entity Framework ile oluşturulmuş Entityler arasında null kontrolü yapmanın basit güzel bir yolu var mıdır?
Örneğin Entity Framework ile database first yöntemini kullanarak bir veritabanını örnekledik. Mesela Kullanici nesnesi, ona bağlı KullaniciAdres Nesnesi, ona bağlı Ilce ve ona bağlı Il tabloları var. Ben Kullanıcının İline erişmek istediğimde şöyle bir kod kullanıyorum:
var kullanici= db.Kullanici.Find(id);
var il=kullanici.KullaniciAdres.FirstOrDefault().Ilce.Il.IlAdi;
Böyle bir kod kullandığımda bütün alanlar dolu ise sorun yok. Ama Kullanıcının hiç adresi yoksa yada adresi varsa bile ona bağlı bir ilçe yoksa ve hatta (çok çok istisna olarak) o ilçeye bağlı bir il yoksa hata null exception fırlatacaktır. Onun içinde tek tek if kontrolü yapmak gerekiyor. Ortaya şöyle hem güzel olmayan hemde pek iyi olmayan kod parçaları çıkıyor:
var il=String.Empty;
if ( kullanici!=null && kullanici.KullaniciAdres.Count()>0 && kullanici.KullaniciAdres.FirstOrDefault().Ilce!=null && kullanici.KullaniciAdres.FirstOrDefault().Ilce.Il !=null )
{
il=kullanici.KullaniciAdres.FirstOrDefault().Ilce.Il.IlAdi;
}
gibi bir kod çıkıyor. Hadi bunun için yaptık diyelim. Ama onlarca tablonun olduğu bir veritabanını modellediğimiz zaman mutlaka arada kaçanlar oluyor. Bundan başka null exceptionları engellemenin yolları var mı? Yada yaptığım sistem mi yanlış? veritabanı mantığı mı yanlış