• Manufacturer
  • Fluent API
  • WillCascadeOnDelete(true)
  • Annotatsiyalar
  • Ident
  • Kaskadli o’chirishni bekor qilish




    Download 1,39 Mb.
    bet45/53
    Sana30.11.2023
    Hajmi1,39 Mb.
    #108476
    1   ...   41   42   43   44   45   46   47   48   ...   53
    Bog'liq
    Dasturiy injiniring

    Kaskadli o’chirishni bekor qilish
    Agar tashqi kalit NOT NULL (Nullable) qiymatga ega bo’lishi mumkin bo’lsa, bosh element o’chirilishi natijasida u bilan bog‘liq boshqa jadvallarda kaskadli o’chirish amalga oshiriladi.
    Yuqorida keltirilgan misolda Manufacturer xususiyati tashqi kalit vazifasini bajaradi va u int tipiga mansub. Shuning uchun jadval generatsiya qilinayotgan vaqtda ON DELETE CASCADE qoidasiga amal qilinadi.
    Agar bizda Manufacturer xususiyati int? kabi aniqlangan bo’lsa, WithRequired metodi o’rnida WithOptional() metodidan foydalaniladi:
    (modelBuilder.Entity().HasMany(p => p.Phones).WithOptional(p=>p.Company))

    Ushbu turda tashkil qilingan aloqada tashqi kalit zarurligi talab etilmaydi. Fluent API da kaskadli o’chirishni olib tashlash uchun WillCascadeOnDelete(false) metodidan foydalanish lozim:


    modelBuilder.Entity()
    .HasMany(p => p.Phones)
    .WithRequired(p => p.Company)
    .HasForeignKey(s => s.Manufacturer)
    .WillCascadeOnDelete(false);


    WillCascadeOnDelete(true) metodi orqali kaskadli o’chirish ta'minlanadi. Shuningdek, kaskadli o’chirishni quyidagi tarzda amalga oshirish mumkin:

    using System.Data.Entity.ModelConfiguration.Conventions;


    ...........................................................
    modelBuilder.Conventions.Remove();
    modelBuilder.Conventions.Remove();

    Annotatsiyalar


    Annotatsiyalar orqali modellar va jadvallar o'rtasidagi moslik atributlar yordamida ta'minlanadi. Annotatsiyalarni ta'minlovchi ko’pgina klasslar System.ComponentModel.DataAnnotations nomlar fazosida joylashgan.


    Kalitni sozlash
    Muayyan xususiyatning kalit ekanligini o’rnatish uchun [Key] atributidan foydalanish lozim:

    public class Phone


    {
    [Key]
    public int Ident { get; set; }
    public string Name { get; set; }
    }

    Endilikda Ident xususiyati birlamchi kalit sifatida qabul qilinadi. Kalitni identifikator sifatida o’rnatish uchun DatabaseGenerated(DatabaseGeneratedOption.Identity) atributidan foydalaniladi:


    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Ident { get; set; }

    Agar xususiyat Key atributi bilan belgilangan bo’lsa va tipiga int mansub bo’lsa, unga DatabaseGenerated(DatabaseGeneratedOption.Identity) atributini qo’llash shart hisoblanmaydi.





    Download 1,39 Mb.
    1   ...   41   42   43   44   45   46   47   48   ...   53




    Download 1,39 Mb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Kaskadli o’chirishni bekor qilish

    Download 1,39 Mb.