Entity Framework indsætter dubletter
Hej.Jeg sidder og roder med en applikation til at lave madplaner, i den forbindelse har jeg valgt at forsøge mig med Entity framework, dog er jeg rendt ind i et problem jeg bare ikke kan gennemskue.
Datamodel kan ses her : http://i.imgur.com/NMwZv.png
Når jeg opretter en opskrift, så vælger jeg en måle enhed (unit of measure) som jeg har i en tabel, hvis ikke enheden findes i forvejen skal den oprettes, ellers skal den eksisterende refereres.
MEN første gang jeg gør det så er det fint, gør jeg det igen uden at genstarte applikationen, så bliver der indsat en ny og den bliver brugt istedet.
min kode til at indsætte er her :
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);
ctx.ObjectStateManager.ChangeObjectState(recipe.courses[0], EntityState.Unchanged);
}
ctx.SaveChanges();
}
return recipe;
}