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