SqlQuery 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 APIva 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")
{ }
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; }
}
Klassni 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");
// ispolzovanie 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: