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 Manufacturerxususiyati 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:
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:
{
[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.