Junior
Šta je Entity Framework?
sobes.tech АИ
Одговор од АИ
Entity Framework (EF) je objektno-relejioni akcelerator (ORM) za .NET, koji omogućava programerima da rade sa bazama podataka koristeći .NET objekte, a ne da pišu većinu koda za pristup podacima. On pretvara LINQ upite u SQL i nazad.
Glavne komponente i mogućnosti:
- DbContext: Predstavlja sesiju rada sa bazom podataka, uključuje DbSet-ove za entitete.
- DbSet: Predstavlja kolekciju entiteta određenog tipa u kontekstu.
- LINQ to Entities: Omogućava pisanje upita ka bazi podataka koristeći sintaksu LINQ.
- Migracije (Code-First Migrations): Omogućavaju upravljanje promenama šeme baze podataka tokom razvoja modela podataka u kodu.
- Praćenje promena: EF automatski prati promene napravljene u entitetima učitanim iz baze podataka i generiše odgovarajuće SQL komande za čuvanje tih promena.
Podržani pristupi razvoja:
- Code-First: Definisanje modela podataka u C# kodu i generisanje šeme baze podataka na osnovu toga.
- Database-First: Kreiranje modela .NET iz postojeće baze podataka.
- Model-First: Kreiranje grafičkog modela u EF dizajneru i generisanje kako koda, tako i šeme baze podataka. (Manje uobičajeno u EF Core)
Prednosti:
- Ubrzanje razvoja zahvaljujući apstrakciji od detalja implementacije pristupa podacima.
- Snažna tipizacija i provera u fazi kompilacije.
- Prijatno upravljanje modelom podataka i njegovim promenama.
Primer korišćenja EF Core (paradigma Code-First):
// Definisanje modela podataka
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; }
}
// Definisanje konteksta baze podataka
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// Primer konfiguracije za SQLite
optionsBuilder.UseSqlite("Data Source=blogging.db");
}
}
// Primer korišćenja u kodu
// using (var context = new BloggingContext())
// {
// // Dodavanje podataka
// context.Blogs.Add(new Blog { Url = "http://example.com/blog" });
// context.SaveChanges();
//
// // Upit podataka
// var blog = context.Blogs
// .OrderBy(b => b.BlogId)
// .First();
// }
EF Core je multiplatformska, lagana i proširiva verzija Entity Framework-a, koja je preporučena za nove aplikacije .NET.