我正在为食谱/膳食计划构建一个应用程序,但我遇到了一个我似乎无法弄清楚的问题。
我有一个计量单位表,我将使用的单位保存在其中,我只想要这里的唯一单位(用于杂货清单计算等)
但是如果我在食谱上使用表中的一个单位,第一次没问题,没有插入度量单位,但第二次我得到一个“重复”。
我怀疑它与 entitykey 有关,因为主键是 sql server (2008 r2) 上的标识列
出于某种原因,它可以更改某些对象(课程,请参阅代码)上的对象状态并且不会生成重复项,但这不适用于测量单位
我的插入方法如下所示:
public recipe Create(recipe recipe)
{
using (RecipeDataContext ctx = new RecipeDataContext())
{
foreach (recipe_ingredient rec_ing in recipe.recipe_ingredient)
{
if (rec_ing.ingredient.ingredient_id == 0)
{
ingredient ing = (from _ing in ctx.ingredients
where _ing.name == rec_ing.ingredient.name
select _ing).FirstOrDefault();
if (ing != null)
{
rec_ing.ingredient_id = ing.ingredient_id;
rec_ing.ingredient = null;
}
}
if (rec_ing.unit_of_measure.unit_of_measure_id == 0)
{
unit_of_measure _uom = (from dbUom in ctx.unit_of_measure
where dbUom.unit == rec_ing.unit_of_measure.unit
select dbUom).FirstOrDefault();
if (_uom != null)
{
rec_ing.unit_of_measure_id = _uom.unit_of_measure_id;
rec_ing.unit_of_measure = null;
}
}
ctx.Recipes.AddObject(recipe);
//for some reason it works to change object state of this, and not generate a duplicate
ctx.ObjectStateManager.ChangeObjectState(recipe.courses[0], EntityState.Unchanged);
}
ctx.SaveChanges();
}
return recipe;
}
我的数据模型如下所示: