Junior
Čo je Entity Framework?
sobes.tech AI
Odpoveď od AI
Entity Framework (EF) je objektovo-relačný akcelerátor (ORM) pre .NET, ktorý umožňuje vývojárom pracovať s databázami pomocou objektov .NET, namiesto písania väčšiny kódu pre prístup k údajom. Prevodí LINQ dotazy na SQL a späť.
Hlavné komponenty a funkcie:
- DbContext: Predstavuje reláciu s databázou, obsahuje DbSety pre entity.
- DbSet: Predstavuje kolekciu entít určitého typu v kontexte.
- LINQ to Entities: Umožňuje písanie dotazov na databázu pomocou syntaxe LINQ.
- Migrácie (Code-First Migrations): Umožňujú správu zmien schémy databázy počas vývoja modelu dát v kóde.
- Sledovanie zmien: EF automaticky sleduje zmeny vykonané v entitách načítaných z databázy a generuje príslušné SQL príkazy na uloženie týchto zmien.
Podporované prístupy vývoja:
- Code-First: Definovanie modelu dát v kóde C# a generovanie schémy databázy na základe toho.
- Database-First: Vytvorenie modelu .NET z existujúcej databázy.
- Model-First: Vytvorenie grafického modelu v dizajnéri EF a generovanie ako kódu, tak aj schémy databázy. (Menej rozšírené v EF Core)
Výhody:
- Zrýchlenie vývoja vďaka abstrakcii od detailov implementácie prístupu k dátam.
- Silná typizácia a kontrola v čase kompilácie.
- Pohodlné riadenie modelu dát a jeho zmien.
Príklad použitia EF Core (paradigma Code-First):
// Definícia modelu dát
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; }
}
// Definícia kontextu databázy
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// Príklad konfigurácie pre SQLite
optionsBuilder.UseSqlite("Data Source=blogging.db");
}
}
// Príklad použitia v kóde
// using (var context = new BloggingContext())
// {
// // Pridanie dát
// context.Blogs.Add(new Blog { Url = "http://example.com/blog" });
// context.SaveChanges();
//
// // Dotaz na dáta
// var blog = context.Blogs
// .OrderBy(b => b.BlogId)
// .First();
// }
EF Core je multiplatformová, ľahká a rozšíriteľná verzia Entity Framework, ktorá je odporúčaná pre nové aplikácie .NET.