Piszę aplikację działającą na bazie danych. Oto wycinek kodu:
Recipe newRecipe = null;
using (var sut = new MyModelContainer())
{
newRecipe = new Recipe
{
Title = "Tytul",
Directions = "cos tam cos",
RequiredTime = TimeSpan.FromSeconds(10),
UsedIngredients = new EntityCollection<UsedIngredient>()
};
newRecipe.UsedIngredients.Add(new UsedIngredient { Ingredient = sut.Ingredients.First(), Amount = "duzo" });
}
using (var sut = new MyModelContainer())
{
sut.Recipes.AddObject(newRecipe);
sut.SaveChanges();
}
Niesety wywala mi się na:
sut.Recipes.AddObject(newRecipe);
System.InvalidOperationException: The EntityKey property can only be set when the current value of the property is null.
W rzeczywistości te obiekty są przesyłane przez WCF-a, ale problem jest podobny.
Tworzymy nowy obiekt Recipe, do którego dorzucamy nowe obiekty typu UsedIngredient, które to chcemy połączyć z obiektami Ingredient wyciągniętymi z bazy danych. Oczywiście wszystko dzieje się po stronie klienta, a w WCF-ie ma to być tylko utrwalone.