Sobes.tech
Junior

Kas ir Entity Framework?

sobes.tech AI

Atbilde no AI

Entity Framework (EF) ir objekto-relačuārais paātrinātājs (ORM) .NET platformai, kas ļauj izstrādātājiem strādāt ar datu bāzēm, izmantojot .NET objektus, nevis rakstot lielāko daļu datu piekļuves koda. Tas pārvērš LINQ vaicājumus SQL un atpakaļ.

Galvenās sastāvdaļas un iespējas:

  • DbContext: pārstāv sesiju ar datu bāzi, ietver DbSet entītijām.
  • DbSet: pārstāv konkrēta tipa entītiju kolekciju kontekstā.
  • LINQ uz entītijām: ļauj rakstīt vaicājumus datu bāzei, izmantojot LINQ sintaksi.
  • Migrācijas (Code-First Migrations): ļauj pārvaldīt datu bāzes shēmas izmaiņas datu modeļa attīstības laikā.
  • Izmaiņu uzraudzība: EF automātiski uzrauga izmaiņas, kas veiktas entītijās, kas ielādētas no datu bāzes, un ģenerē atbilstošas SQL komandas šo izmaiņu saglabāšanai.

Atbalstītie izstrādes pieejas:

  • Code-First: definējiet datu modeli C# kodā un ģenerējiet datu bāzes shēmu, pamatojoties uz to.
  • Database-First: izveidojiet .NET modeli no esošas datu bāzes.
  • Model-First: izveidojiet grafisku modeli EF dizainerī un ģenerējiet gan kodu, gan datu bāzes shēmu. (Mazāk izplatīts EF Core)

Priekšrocības:

  • Paātrina izstrādi, izmantojot abstrakciju no datu piekļuves detaļām.
  • Spēcīga tipizācija un pārbaude kompilācijas laikā.
  • Ērta datu modeļa un tā izmaiņu pārvaldība.

Piemērs EF Core izmantošanai (Code-First paradigma):

// Datu modeļa definīcija
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; }
}

// Datu bāzes konteksta definīcija
public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // SQLite konfigurācijas piemērs
        optionsBuilder.UseSqlite("Data Source=blogging.db");
    }
}

// Piemērs izmantošanai kodā
// using (var context = new BloggingContext())
// {
//     // Datu pievienošana
//     context.Blogs.Add(new Blog { Url = "http://example.com/blog" });
//     context.SaveChanges();
//
//     // Datu vaicājums
//     var blog = context.Blogs
//         .OrderBy(b => b.BlogId)
//         .First();
// }

EF Core ir daudzplatformu, viegla un paplašināma Entity Framework versija, kas ieteicama jauniem .NET lietojumiem.