وقت بخیر استاد
1 - با حذف رکوردی از جدولی که رابطه دارد، مثلا حذف یک استاد از جدول Person، زمان SaveChanges() ، باید خطا بدهد از طرف sqlServer ? یا باید حتما دستی کدی بنویسیم که این اتفاق بیفتد؟
2 - و اینکه با افزودن این خط کد نیاز به Migration nhvdl?
builder.HasOne(p => p.Teacher).WithOne(c => c.Course).HasForeignKey<Course>(o => o.TeacherId)
سلام
در دوره توضیح دادم
آن خط را برای من کامل شرح دهید لطفا
ممنونم از پاسخ گویی شما
من تا قسمت110 پیش رفتم به همین خاطر نمیدونستم این بخش رو توضیح دادید.
بجای Data Annotation از FluentApi استفاده کردم در کلاسی بنام CourseMapp در پوشه ای بنام Mapper و روابط و رفتارهای پراپرتی ها رو اونجا تعریف کردم.
builder.HasOne(p => p.Teacher).WithOne(c => c.Course).HasForeignKey<Course>(o => o.TeacherId)
در این خط رابطه ی یک به یک بین جدول Person با NavigationProperty بنام Course و انتیتی Course با NavigationProperty بنام Teacher و کلید ForeignKey با عنوان TeacherId در جدول Course تعریف شده.
راستش استاد مشکلم این بود که با حذف یک استاد کلاس هایی که برای اون شخص تعریف شده بود، ستون استادش خالی میشد اما هیچ خطایی از سمت Sql نداشتم با وجود تعریف رابطه و چون حدس میزدم این خط کد رو بعد از Migration اضافه کردم، فایل Key از جدول Course رو در sql چک کردم که متوجه شدم فقط کلید اصلی داره و ForeignKey نداره، بنابراین Migration زدم و ForeignKey اضافه شد و مشکلم حل شد.
فقط نمیدونستم که با اضافه کردن این خط کد نیاز به Migration داریم یا نه که وقتی امتحان کردم متوجه شدم که بله.
هوش مصنوعی .OnDelete(DeleteBehavior.Restrict) رو پیشنهاد کرد اما چون احساس میکردم این نباید راهش باشه رفتم سراغ Sql
من خاطرم نیست در دوره fluent آموزش داده باشم
احتمالا در جلسات بعدی راجع بهش صحبت کنم
دوره ی EFcore استاد خیامدار رو دیدم من و اینکه از مدتی قبل کمی پیش زمینه داشتم اما بخاطر اینکه پایه ام خیلی ضعیف بود این دوره رو ثبت نام کردم و راستش سعی میکنم هرقسمت رو قبل از اینکه شما کدش رو بزنید خودم انجام بدم و بعد آموزش شما رو میبینم تا ایرادات و ضعف هام مشخص بشه این شد که اول پروژه، Entity ها رو با روابطشون تعریف و ایجاد کردم
بسیار عالی
در ادامه دوره به این موارد نیز خواهیم پرداخت