Junior
Kas yra Entity Framework?
sobes.tech AI
Atsakymas iš AI
Entity Framework (EF) — tai objektų-reliacinis akceleratorius (ORM) .NET platformai, leidžiantis kūrėjams dirbti su duomenų bazėmis naudodami .NET objektus, o ne rašyti didžiąją dalį duomenų prieigos kodo. Jis paverčia LINQ užklausas į SQL ir atgal.
Pagrindinės komponentės ir galimybės:
- DbContext: atstovauja sesiją su duomenų baze, apima DbSet'us entitetams.
- DbSet: atstovauja tam tikro tipo entitetų kolekciją kontekste.
- LINQ to Entities: leidžia rašyti užklausas duomenų bazei naudojant LINQ sintaksę.
- Migracijos (Code-First Migrations): leidžia valdyti duomenų bazės schemos pakeitimus duomenų modelio vystymosi metu.
- Pakeitimų stebėjimas: EF automatiškai stebi pakeitimus, padarytus į duomenų bazę įkeltuose entitetuose, ir generuoja atitinkamas SQL komandas šių pakeitimų išsaugojimui.
Palaikomi kūrimo būdai:
- Code-First: apibrėžti duomenų modelį C# kode ir generuoti duomenų bazės schemą remiantis juo.
- Database-First: sukurti .NET modelį iš esamos duomenų bazės.
- Model-First: sukurti grafinį modelį EF dizaineriu ir generuoti tiek kodą, tiek duomenų bazės schemą. (Mažiau paplitęs EF Core)
Privalumai:
- Greitesnis vystymas dėl abstrakcijos nuo duomenų prieigos detalės.
- Stipri tipizacija ir patikra kompiliacijos metu.
- Patogus duomenų modelio ir jo pakeitimų valdymas.
Pavyzdys naudojant EF Core (Code-First paradigma):
// Duomenų modelio apibrėžimas
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; }
}
// Duomenų bazės konteksto apibrėžimas
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// Pavyzdinė konfigūracija SQLite
optionsBuilder.UseSqlite("Data Source=blogging.db");
}
}
// Pavyzdys naudojimo kode
// using (var context = new BloggingContext())
// {
// // Duomenų pridėjimas
// context.Blogs.Add(new Blog { Url = "http://example.com/blog" });
// context.SaveChanges();
//
// // Duomenų užklausa
// var blog = context.Blogs
// .OrderBy(b => b.BlogId)
// .First();
// }
EF Core yra krypčių platforma, lengva ir išplečiama Entity Framework versija, rekomenduojama naujiems .NET taikymams.