Sobes.tech
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; }
}

// Տվյալների բազայի կոնտեքստի սահմանում
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 հավելվածների համար։