• Fluent API va annotatsiya Agar loyihamizda biz Code First
  • Fluent API
  • Кlassni jadval bilan mos qo’yish EF
  • Phone
  • Dasturiy injiniring (EntityFramework 6)




    Download 1,39 Mb.
    bet38/53
    Sana30.11.2023
    Hajmi1,39 Mb.
    #108476
    1   ...   34   35   36   37   38   39   40   41   ...   53
    Bog'liq
    Dasturiy injiniring

    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);

    1. 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:

    Download 1,39 Mb.
    1   ...   34   35   36   37   38   39   40   41   ...   53




    Download 1,39 Mb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Dasturiy injiniring (EntityFramework 6)

    Download 1,39 Mb.