Junior
Entity Framework nima?
sobes.tech AI
AIdan javob
Entity Framework (EF) — bu .NET uchun ob'ekt-aloqa (ORM) accelerator bo'lib, dasturchilarga ma'lumotlar bazalari bilan ishlash imkonini beradi, ko'p hollarda ma'lumotlarga kirish kodining katta qismini yozmasdan. U LINQ so'rovlarini SQL ga va aksincha aylantiradi.
Asosiy komponentlar va imkoniyatlar:
- DbContext: Ma'lumotlar bazasi bilan ishlash sessiyasini ifodalaydi, entitilar uchun DbSet'larni o'z ichiga oladi.
- DbSet: Kontekstda ma'lum bir turdagi entitilar to'plamini ifodalaydi.
- LINQ to Entities: LINQ sintaksisi yordamida ma'lumotlar bazasiga so'rovlar yozishga imkon beradi.
- Migratsiyalar (Code-First Migrations): Ma'lumotlar bazasi sxemasidagi o'zgarishlarni boshqarish imkonini beradi, model kodda rivojlanib borar ekan.
- O'zgarishlarni kuzatish: EF avtomatik ravishda ma'lumotlar bazasidan yuklangan entitilarga kiritilgan o'zgarishlarni kuzatadi va ularni saqlash uchun mos SQL buyruqlarini ishlab chiqaradi.
Qo'llab-quvvatlanadigan rivojlanish yondashuvlari:
- Code-First: C# kodida ma'lumot modelini aniqlash va unga asoslangan holda ma'lumotlar bazasi sxemasini yaratish.
- Database-First: Mavjud ma'lumotlar bazasidan .NET modelini yaratish.
- Model-First: EF dizaynerida grafik model yaratish va kod hamda ma'lumotlar bazasi sxemasini ishlab chiqarish. (EF Core'da kamroq tarqalgan)
Afzalliklari:
- Ma'lumotlarga kirish bo'yicha tafsilotlardan abstraktsiya qilish orqali rivojlanishni tezlashtiradi.
- Kuchli tiplash va kompilyatsiya vaqtida tekshirish.
- Ma'lumot modelini va uning o'zgarishlarini qulay boshqarish.
EF Core'dan foydalanish misoli (Code-First paradigmasi):
// Ma'lumot modelini aniqlash
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; }
}
// Ma'lumotlar bazasi kontekstini aniqlash
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// SQLite uchun misol konfiguratsiya
optionsBuilder.UseSqlite("Data Source=blogging.db");
}
}
// Kodda foydalanish misoli
// using (var context = new BloggingContext())
// {
// // Ma'lumot qo'shish
// context.Blogs.Add(new Blog { Url = "http://example.com/blog" });
// context.SaveChanges();
//
// // Ma'lumotlarni so'rov qilish
// var blog = context.Blogs
// .OrderBy(b => b.BlogId)
// .First();
// }
EF Core — bu ko'p platformali, yengil va kengaytiriladigan Entity Framework versiyasi, yangi .NET ilovalari uchun tavsiya etiladi.