Entity Framework
EntityFramework के साथ विरासत (पहले कोड)
खोज…
प्रति पदानुक्रम तालिका
यह दृष्टिकोण सभी वंशानुक्रम संरचना का प्रतिनिधित्व करने के लिए डेटाबेस पर एक तालिका उत्पन्न करेगा।
उदाहरण:
public abstract class Person
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime BirthDate { get; set; }
}
public class Employee : Person
{
public DateTime AdmissionDate { get; set; }
public string JobDescription { get; set; }
}
public class Customer : Person
{
public DateTime LastPurchaseDate { get; set; }
public int TotalVisits { get; set; }
}
// On DbContext
public DbSet<Person> People { get; set; }
public DbSet<Employee> Employees { get; set; }
public DbSet<Customer> Customers { get; set; }
उत्पन्न तालिका इस प्रकार होगी:
तालिका: लोग फ़ील्ड्स: आईडी नाम जन्मतिथि छूट प्रवेशक जॉबडेसक्रिप्शन LastPurchaseDate कुल जमा
जहाँ 'डिस्क्रिमिनेटर' वंशानुक्रम पर उपवर्ग का नाम रखेगा और 'एडमिशनडेट', 'जॉबडेस्क्रिप्शन', 'लास्टपर्चेसडे', 'टोटलवीसिट्स' अशक्त हैं।
लाभ
- बेहतर प्रदर्शन के बाद से किसी भी जॉइन की आवश्यकता नहीं है, हालांकि कई कॉलम के लिए डेटाबेस को कई पेजिंग ऑपरेशन की आवश्यकता हो सकती है।
- उपयोग करने और बनाने के लिए सरल
- अधिक उपवर्ग और फ़ील्ड जोड़ना आसान है
नुकसान
- तीसरा सामान्य रूप विकिपीडिया का उल्लंघन करता है : तीसरा सामान्य रूप
- बहुत सारे अशक्त क्षेत्र बनाता है
प्रति प्रकार तालिका
यह एप्रोच डेटाबेस पर सभी विरासत संरचना का प्रतिनिधित्व करने के लिए (n + 1) टेबल उत्पन्न करेगा जहां n उपवर्गों की संख्या है।
कैसे:
public abstract class Person
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime BirthDate { get; set; }
}
[Table("Employees")]
public class Employee : Person
{
public DateTime AdmissionDate { get; set; }
public string JobDescription { get; set; }
}
[Table("Customers")]
public class Customer : Person
{
public DateTime LastPurchaseDate { get; set; }
public int TotalVisits { get; set; }
}
// On DbContext
public DbSet<Person> People { get; set; }
public DbSet<Employee> Employees { get; set; }
public DbSet<Customer> Customers { get; set; }
उत्पन्न तालिका इस प्रकार होगी:
तालिका: लोग फ़ील्ड्स: आईडी नाम जन्मतिथि
तालिका: कर्मचारी क्षेत्र: व्यक्ति प्रवेश जॉबड्रेसक्रिप्शन
तालिका: ग्राहक: क्षेत्र: व्यक्ति अंतिम LastPurchaseDate TotalVisits
जहां सभी तालिकाओं पर 'व्यक्तिवाद' एक प्राथमिक कुंजी और People.Id के लिए एक बाधा होगी
लाभ
- सामान्यीकृत टेबल
- कॉलम और उपवर्गों को जोड़ना आसान है
- कोई अशक्त स्तंभ नहीं
नुकसान
- डेटा को पुनः प्राप्त करने के लिए सम्मिलित होना आवश्यक है
- उपवर्ग इंजेक्शन अधिक महंगा है