EntityFramework'te
inheritance kullanımının "olmazsa olmaz" olabileceği ihtimaline nasıl varabildik onu merak ettim ben... Veri
class'larının birbirinden türetilmesinden bahsediyoruz yanılmıyorsam, başka bir "
inheritance" değil sanırım sorduğunuz...
EntityFramework
inheritance kullanımını destekliyor. Lakin, veri alanlarını ilişkilendirmek yerine,
inheritance kullanıldığı zaman, veritabanı üzerinde tablo yapılarının pek de güzel oluşmadığını söylemem gerekir. Ayrıca soru açıklamasında belirttiniz gibi; hem sorgulamada hem de veri modelinin ayağa kalkması sırasında performans kaybı olabilceğini düşünüyorum.
Kişisel görüşüm; EntityFramework ne kadar nesneye yönelik bir yaklaşıma sahip olsa bile; yine de
inheritance kullanılmamalı.
Class'lar tabloları temsil edebilecek mümkün olan en basit yapıda olmalı ve nesne ilişkileri
class içindeki veri alanlarıyla sağlanmalı.
Inheritance, MongoDb benzeri NoSQL sistemlerine daha çok yakışabilecek bir kullanım tarzı olacaktır diye düşünüyorum.
Yani örnek olarak;
Canlı -> Hayvan -> Kedi yapısını düşünürsek,
public class Canli { }
public class Hayvan : Canli { }
public class Kedi : Hayvan { }
şeklinde kullanmak yerine;
public class Canli { }
public class Hayvan { public Canli CanliInfo { get; set; } }
public class Kedi { public Hayvan HayvanInfo { get; set; } }
şeklinde kullanılması benim daha çok tercih ettiğim ve önerebileceğim kullanım şeklidir... Aksini savunan da olabilir muhtemelen, ama "
olmazsa olmaz" demek mümkün değil... Daha çok "
eğer öyle istiyorsan öyle de olur" benzeri bir durumdur
inheritance kullanmak. . .