Вчера я задал вопрос, а потом говорю, что решил проблему.Но сегодня та же ошибка произошла снова.
У меня есть три таблицы dbo.Food
, dbo.Menu
и dbo.FoodMenu
, которые представляют собой таблицу ссылок «многие ко многим», например:
- dbo.Food {ID,FoodName}
- dbo.Menu {ID, MenuName}
- dbo.FoodMenu {FoodID, MenuID}
Я хочу вставить идентификатор еды и идентификатор меню в FoodMenuТаблица.Мой контекст в порядке, мое отображение в порядке, коды и Exception
ниже.Пожалуйста, помогите.
public JsonResult FoodMenu(FoodMenuViewModel vm)
{
if (ModelState.IsValid)
{
ManyDbContext ctx = new ManyDbContext();
foreach (var item in vm.MenuIds)
{
ctx.FoodMenus.Add(new FoodMenu { FoodID = vm.FoodId, MenuID = item });
ctx.SaveChanges();
}
return Json(new { Result = true, Mesaj = "" });
}
else
{
return Json(new { Result = false, Mesaj = "" });
}
}
Исключение:
System.Data.Entity.Infrastructure.DbUpdateException: 'Произошла ошибка при обновлении записей.Подробности смотрите во внутреннем исключении. '
SqlException: Неверное имя объекта' dbo.FoodMenus '.
Контекст:
public DbSet<Food> Foods { get; set; }
public DbSet<Menu> Menus { get; set; }
public DbSet<FoodMenu> FoodMenus { get; set; }
Отображение:
modelBuilder.Entity<Food>()
.HasMany<Menu>(s => s.menus)
.WithMany(c => c.foods)
.Map(cs =>
{
cs.MapLeftKey("FoodID");
cs.MapRightKey("MenuID");
cs.ToTable("FoodMenu");
});
Что я понимаю из этой ошибки: имя моей таблицы dbo.FoodMenu
, но исключение говорит:должно быть dbo.FoodMenus
.Но я не знаю почему.
Вот мое FoodMenu class
;
public class FoodMenu
{
[Key, Column(Order = 0)]
public int FoodID { get; set; }
[Key, Column(Order = 1)]
public int MenuID { get; set; }
}