دسته بندی ها
14:57 1398/11/08

خطای Introducing FOREIGN KEY constraint may cause cycles or multiple cascade paths در مایگریشن

مشخصات سوال کننده :
کاربر : fateme     امتیاز کاربر : 1617     رتبه کاربر : 2
دسته بندی : Asp.net Core Asp.net Mvc

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3518
پاسخ دهنده : hamid_b 14:38 1398/11/10

مشکل شما Multiple cascade paths هست. به این معنی که یک اگر یک ردیف از جدول Provience حذف بشه همه ی ردیف های مرتبط با اون در جدول Candidator حذف میشه.

شما می تونید با استفاده از کد زیر این مشکل رو حل کنید :

 

protected override void OnModelCreating(ModelBuilder builder)
    { 
         builder.Entity<Candidator>().HasOne(p => p.provienceID).WithMany(b => b.ProvienceID)
         .OnDelete(DeleteBehavior.Restrict);
    }

 

البته یک راه حل ساده تر هم وجود داره. میتونید کدهاتون رو به شکل زیر هم تغییر بدید

 

    public class Candidator
    {
        [Key]
        public int CandidatorID { get; set; }
        public string FirstName { get; set; }
        public string Family { get; set; }
        public int? ProvienceID { get; set; }
        [ForeignKey("ProvienceID")]
        public virtual Provience Provience { get; set; }

    }

 

در این صورت اگر مقدار ProvienceID در جدول اصلی حذف بشه در جدول Candidator مقدار null رو میپذیره

به این پاسخ امتیاز بدهید    0
امتیاز: 510 رتبه: 4
پاسخ دهنده : sadati 20:59 1399/10/13

من انجام دادم و حل شد !

فقط چند مسئله :

چرا در هیچ آموزشی به این علامت سوال پس از int در property  تاکید نشده ؟ (?int)

 

 

به این پاسخ امتیاز بدهید    0
امتیاز: 17 رتبه: 41
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود