Entity Framework 6


Kaskadli o‘chirishni bekor qilish



Yüklə 1,54 Mb.
səhifə46/54
tarix17.06.2023
ölçüsü1,54 Mb.
#132013
1   ...   42   43   44   45   46   47   48   49   ...   54
EntityFramework(6,u) uzb

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.





Yüklə 1,54 Mb.

Dostları ilə paylaş:
1   ...   42   43   44   45   46   47   48   49   ...   54




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2025
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin