Entity Framework funksionalligini klasslar tashkil qiladi. Ushbu klasslar System.Data.Entity nomlar fazosida joylashgan. Ushbu nomlar fazosidan eng ko‘p ishlatiladigan klasslar quyidagilar:
DbContext: DB bilan aloqani tashkil qilish uchun zarur bo‘lgan ma’lumotlar kontekstini ifodalaydi.
DbModelBuilder: C# tilidagi klasslar bilan DB dagi elementlarni moslashtiradi.
DbSet/DbSet: DBda saqlanayotgan elementlar to‘plamini ifodalaydi.
DB bilan Entity Framework orqali ishlayotgan ixtiyoriy dasturda bizga ma’lumotlar konteksti (DbContext dan vorislangan) va DbSet ma’lumotlar to‘plami (DB jadvallari bilan aloqa uchun) kerak bo‘ladi. Bizning misolda ma’lumotlar konteksti sifatida UserContext klassidan foydalanamiz.
Ushbu klass konstruktorida bosh klass konstruktori chaqiriladi. Ushbu konstruktorda "DbConnection" satri parametr sifatida uzatilgan bo‘lib, bu qiymat DBga ulanishni ifodalaydi. Biz konstruktordan foydalanmasak, ulanish satri nomi ma’lumotlar konteksti bilan bir xil nomda bo‘lishi shart.
Shuningdek klassda bitta Users xususiyati aniqlangan bo‘lib, unda User ob’ektlari to‘plami saqlanadi. Ushbu klassda ma’lumotlar konteksti to‘plami uchun DbSetklassidan foydalanilgan. Ushbu xususiyat orqali DBdagi User jadvali bilan aloqa o‘rnatiladi.
Keyingi qadamda DBga ulanishni hosil qilishimiz lozim. Buning uchun loyihadagi konfiguratsiya faylidan foydalanamiz. Oddiy loyihalarda konfiguratsiya fayli sifatida - App.config (bizning hol uchun), veb-loyihalarda esa - web.config faylidan foydalaniladi. Entity Framework loyihaga qo‘shilgach, App.config fayli quyidagi mazmunga ega:
yopiluvchi tegdan so‘ng, quyidagi elementni qo‘shib qo‘yamiz:
providerName="System.Data.SqlClient"/>
Loyihadagi barcha ulanishlar connectionStrings seksiyasida aniqlanishi lozim va har bir ulanish add elementi orqali shakllantiriladi. UserContext klass konstruktorida ulanish satri sifatida "DbConnection"dan foydalanilgan. Shuning uchun ulanish satridagi name atributi qiymati name="DBConnection"ga teng.
Ulanish satridagi ulanish satri connectionString atributi orqali aniqlanadi. Bizning loyihada ulanish satrida userstore.mdf DB bilan ishlash ko‘rsatilgan. Endi loyihamizdagi Program.cs faylida quyidagi o‘zgartirishlarni amalga oshiramiz:
using System;
namespace FirstEF6App
{
class Program
{
static void Main(string[] args)
{
using (UserContext db = new UserContext())
{
// Ikkita User ob’ektini hosil qilamiz User user1 = new User { Name = "Ahmad", Age = 33 };
User user2 = new User { Name = "Nodir", Age = 26 };
// Ularni DBga qo‘shamiz db.Users.Add(user1);
db.Users.Add(user2);
db.SaveChanges();
Console.WriteLine("Ob’ektlar DBga saqlandi");
// DBdan ob’ektlarni olamiz va konsolga chiqaramiz var users = db.Users;
Console.WriteLine("Ob’ektlar ro‘yxati:");
foreach (User u in users)
{
Console.WriteLine("{0}.{1} - {2}", u.Id, u.Name, u.Age);
}
}
Console.Read();
}
}
}