من سه تا مدل دارم
Food
FoodCategory
FoodSelectedCategory
برای اضافه کردن غذایی که توی دسته بندی خودش هست میخوام اد کتم به FoodSelectedCategory
ولی خطای conflict میده میخوام با fluentAPi حلاش کنم ولی یا باز خطا میده یا هر بار فقط foodId رو ذخیره میکنه
کجاش رو اشتباه نوشتم یه توضیخ میدید لطفا برای این فوینت که دقیقا ایندکس اینحا چی میشه ؟
این سه تا مدلم هست و رابطه هاشون
کدی که سرچ کردم این بود ولی درست متوحه هش نشدم ممنون میشم بکید یه توضیخ بدید که اینحا هر کدوم چی قرار میگیره البته مطمین نیستم درست باشه. بعد این همچنان خطای conflict رو دارم
modelBuilder.Entity<FoodSelectedCategory>(foodSelectedCategory =>
{
foodSelectedCategory
.HasOne(x => x.Food)
.WithMany(x => x.FoodSelectedCategories)
.HasForeignKey(x => x.FoodId);
foodSelectedCategory
.HasOne(x => x.FoodCategory)
.WithMany(x => x.FoodSelectedCategories)
.HasForeignKey(x => x.FoodCategoryId);
// Indexes if needed
foodSelectedCategory.HasIndex(x => x.FoodId);
foodSelectedCategory.HasIndex(x => x.FoodCategoryId);
});
این متد برای add کردن FoodSelectedCategory هست . برکینگ پوینت می گدارم تا مرحلخ آخر درست پر میشه
هم FoodId رو میگیره و هم FoodCategoryId
منتها اخرش اد نمیشه و خطای زیر رو میده:
public async Task AddFoodSelectedCategory(int foodId, List<int> foodCategoryId)
{
if (!foodCategoryId.Any())
return;
foreach (var foodCat in foodCategoryId)
{
FoodSelectedCategory foodSelectedCategory = new FoodSelectedCategory()
{
FoodId = foodId,
FoodCategoryId = foodCat,
RegisterDate = DateTime.Now,
};
await _foodRepository.AddFoodSelectedCategory(foodSelectedCategory);
await _foodRepository.SaveChanges();
}
}
خطا:
SqlException: The INSERT statement conflicted with the FOREIGN KEY constraint "FK_FoodSelectedCategories_FoodCategories_FoodCategoryId". The conflict occurred in database "EvSef_db", table "dbo.FoodCategories", column 'FoodCategoryId'.
ولی قبلش این Fluent api رو می داشتم حداقل خطای conflict نمیداد و یه سطر توی FoodSelectedCategory ایچاد میشد FoodId ثبت میشددولی FoodCategoryId رو 0 ثبت میکرد
الان گیج شده اشمال از کده یا مشکل دیتا بیس و ریلیشن ها؟
کاربرگرامی ! لطفا به پیام صوتی زیر گوش دهید.
اون مورد حل شد ممنون استاد بله صفر وارد میشد و من متوجه نمی شدم
فقط یه سوال
چون مدلها رو نوشتم همین جا پرسیدم
یه متدی دارم که لیستی از Food ها رو از دیتا بیس نشون میده
حالا می خوام جلوی هر غذا دسته بندی که برای اون غذا هم انتخاب شده نشون بده
چون مدلها با هم رابطه دارند نیازی نیست که برای این هم متدی نوشته بشه درسته ؟
و فقط به واسطه رابطه شون میشه استخراجش کرد و توی ویوو نشون داد درسته؟
اگه بله که توی ویو من می خوام اون غذا رو که داره لیست می کنه اول برم توی FoodSelectedCategory
FoodCategoryId رو بدست بیارم
بعد دوباره از توی جدول FoodCategory عنوانش رو در بیارم و نشون بدم: FoodCategoryTitle
این کد اشتباه داره و نشون نمیده .چطور باید اینجا استخراجش کرد:
<td>
@if (!string.IsNullOrEmpty(food.FoodTitle))
{
var category = Model.FoodCategories.FirstOrDefault(c => c.FoodCategoryId == food.FoodId);
if (category != null)
{
<span>@category.FoodCategoryTitle</span>
}
}
</td>
سلام وقت شما بخیر
بسیار هم عالی
بله دقیقا میتونی از رابطش استفاده کنی و در زمان کوئری زدن چون میخوای دیتای مربوطه رو بیاری باید از include استفاده کنی
ممنون استاد حل شد