我有3个表,称为菜,成分和DishIngredient。流利的nhibernate复合类映射导致更新和主键问题
菜
标识
名称
成分
标识
名称
DishIngredient
标识
DishId
原料成分
金额
菜成分链接成分和菜,并增加额外的细节,如数额。
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 INTO Ingredient(Name,Id)VALUES(?,?)] ----> System.Data.SqlClient.SqlException:当IDENTITY_INSERT设置为OFF时,无法在表'Ingredient'中为标识列插入显式值。
所以它看起来像nhibernate正试图插入一个值到成分列的id列,这是一个自动递增的主键....所以显然它失败了。
任何人都可以帮我解决这个问题吗?