Junior
Τι είναι το Entity Framework;
sobes.tech AI
Απάντηση από AI
Το Entity Framework (EF) είναι ένας επιταχυντής αντικειμενο-σχέσης (ORM) για το .NET που επιτρέπει στους προγραμματιστές να εργάζονται με βάσεις δεδομένων χρησιμοποιώντας αντικείμενα .NET, αντί να γράφουν το μεγαλύτερο μέρος του κώδικα πρόσβασης δεδομένων. Μετατρέπει ερωτήματα LINQ σε SQL και το αντίστροφο.
Βασικά συστατικά και δυνατότητες:
- DbContext: Αντιπροσωπεύει μια συνεδρία εργασίας με τη βάση δεδομένων, περιλαμβάνει DbSet για οντότητες.
- DbSet: Αντιπροσωπεύει μια συλλογή οντοτήτων ενός συγκεκριμένου τύπου στο πλαίσιο.
- LINQ to Entities: Επιτρέπει τη συγγραφή ερωτημάτων στη βάση δεδομένων χρησιμοποιώντας σύνταξη LINQ.
- Μεταναστεύσεις (Code-First Migrations): Επιτρέπουν τη διαχείριση αλλαγών στο σχήμα της βάσης δεδομένων καθώς εξελίσσεται το μοντέλο δεδομένων στον κώδικα.
- Παρακολούθηση αλλαγών: Το EF παρακολουθεί αυτόματα τις αλλαγές που γίνονται στις φορτωμένες από τη βάση δεδομένων οντότητες και δημιουργεί τις αντίστοιχες εντολές SQL για αποθήκευση αυτών.
Υποστηριζόμενες προσεγγίσεις ανάπτυξης:
- Code-First: Ορισμός του μοντέλου δεδομένων στον κώδικα C# και δημιουργία του σχήματος της βάσης δεδομένων βάσει αυτού.
- Database-First: Δημιουργία του μοντέλου .NET από μια υπάρχουσα βάση δεδομένων.
- Model-First: Δημιουργία γραφικού μοντέλου στον σχεδιαστή EF και δημιουργία τόσο του κώδικα όσο και του σχήματος της βάσης δεδομένων. (Λιγότερο διαδεδομένο στο EF Core)
Πλεονεκτήματα:
- Επιτάχυνση της ανάπτυξης μέσω της αφαίρεσης από τις λεπτομέρειες υλοποίησης της πρόσβασης στα δεδομένα.
- Ισχυρός τύπος και έλεγχος κατά τη φάση της μεταγλώττισης.
- Άνετος χειρισμός του μοντέλου δεδομένων και των αλλαγών του.
Παράδειγμα χρήσης του EF Core (παραδείγματα Code-First):
// Ορισμός του μοντέλου δεδομένων
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
// Ορισμός του context της βάσης δεδομένων
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// Παράδειγμα ρύθμισης για SQLite
optionsBuilder.UseSqlite("Data Source=blogging.db");
}
}
// Παράδειγμα χρήσης στον κώδικα
// using (var context = new BloggingContext())
// {
// // Προσθήκη δεδομένων
// context.Blogs.Add(new Blog { Url = "http://example.com/blog" });
// context.SaveChanges();
//
// // Ερώτημα δεδομένων
// var blog = context.Blogs
// .OrderBy(b => b.BlogId)
// .First();
// }
Το EF Core είναι μια διασταυρούμενη πλατφόρμα, ελαφριά και επεκτάσιμη έκδοση του Entity Framework, που συνιστάται για νέες εφαρμογές .NET.