У меня есть 3 таблицы, которые называются Dish, Ingredient и DishIngredient.
Блюдо
Идентификатор
Имя
Ингредиент
Идентификатор
Имя
DishIngredient
Id
DishId
IngredientId
Сумма
Ингредиенты блюда связывают ингредиент и блюдо и добавляют дополнительные детали, например количество.
public DishMap()
{
Id(x => x.Id);
Map(x => x.Title);
HasMany(x => x.Ingredients).Fetch.Join().Cascade.All();
}
public IngredientMap()
{
Table("DishIngredient");
Id(x => x.Id);
Map(x => x.Amount);
Join("Ingredient", m =>
{
m.Map(x => x.Name);
m.KeyColumn("Id");
});
}
Это работает для извлечения значений из базы данных, но когда дело доходит до попытки сохранить или обновить, я получаю сообщение:
"NHibernate.Exceptions.GenericADOException: не удалось вставить: [SQL: INSERT INTOIngredient (Name, Id) VALUES (?,?)] ----> System.Data.SqlClient.SqlException: невозможно вставить явное значение для столбца идентификаторов в таблице «Ingredient», когда для IDENTITY_INSERT установлено значение OFF. "
Похоже, что nhibernate пытается вставить значение в столбец id столбца Ingredient, который представляет собой первичный ключ с автоинкрементным увеличением ... так что, очевидно, он не работает.
Может кто-нибудь мне помочьс этим?