|
Dasturiy injiniring (EntityFramework 6)
|
bet | 38/53 | Sana | 30.11.2023 | Hajmi | 1,39 Mb. | | #108476 |
Bog'liq Dasturiy injiniringSqlQuery metodidagi parametr sifatida protsedura nomini qabul qiladi. So’ngra ushbu protsedurada mavjud parametrlar ro'yxat keltiriladi:
GetPhonesByCompany @name
Ushbu protsedura Phones jadvalidagi satrlarni qaytarganligi sababli, SqlQuery metodini klass orqali tiplashtirishimiz mumkin:
db.Database.SqlQuery("GetPhonesByCompany @name", param);
Fluent API va annotatsiya
Agar loyihamizda biz Code First yondashuvidan foydalansak, modellarga mos klasslar DBdagi jadvallarga Entity Frameworkdagi bir qator qoidalar asosida mos qo’yiladi. Ammo ba’zi hollarda ushbu qoidalarni o’zgartirishga yoki qayta ishlashga to’g‘ri keladi. Buning uchun Fluent API va ma’lumotlar annotatsiyasidan foydalanamiz.
Fluent API
Fluent API metodlar to’plamidan iborat bo’lib, ular orqali klass va uning xususiyatlari DB jadvallari va ustunlari bilan mos qo’yiladi.
Fluent API funksionali OnModelCreating metodini qayta aniqlash orqali amalga oshiriladi:
class FluentContext : DbContext
{
FluentContext()
: base("DefaultConnection")
{ }
public DbSet<Phone> Phones { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Fluent API dan foydalanish
base.OnModelCreating(modelBuilder);
}
}
Ekspremental model sifatida quyidagi modeldan foydalanamiz:
class Phone
{
public int Ident { get; set; }
public string Name { get; set; }
public int Discount { get; set; }
public int Price { get; set; }
}
Кlassni jadval bilan mos qo’yish
EF boshlang‘ich holda modelni nomiga mos jadval bilan moslashtiradi. Ammo biz ToTable() metodi orqali ushbu moslikni o’zgartirishimiz mumkin:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().ToTable("Mobiles");
// Fluent API дан фойдаланиш
base.OnModelCreating(modelBuilder);
}
Endi Phone klassiga mos barcha ob’ektlar Mobiles jadvalida saqlanadi. Shuningdek, ushbu ob’ektlar bilan db.Phones xususiyati orqali ishlash imkoniyati mavjud.
Agar biror ob’ektni jadvalda shakllantirish lozim bo’lmasa, Ignore() metodi orqali amalni bekor qilishimiz mumkin:
|
| |