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 հավելվածների համար։