問題が発生しましたが、なぜそれが問題なのか分かりますが、それを修正する正しい方法はわかりません。エンティティフレームワーク:IEntityChangeTrackerの複数のインスタンスでオブジェクトを参照できません
したがって、私のコントローラは、オブジェクトのカテゴリを定義する2つの文字列とともに、ProductをServiceクラスに送信します。
ここにサービスクラスがあります。
public Product AddProduct(Product p, string cat, string subcat)
{
var category = _categoryService.GetCategoryByName(cat, subcat);
p.Categories.Add(category);
return _productRepository.CreateProduct(p);
}
最初の行の取得はので、ここで私は私のコンテキストのインスタンスを使用し、exisitingカテゴリ(CategroyService-> CategoryRepository-> DbContext)です。
次に、そのカテゴリを製品カテゴリのリストに追加します。そして最後に私はリポジトリに渡して、それを私のデータベースに残します(EFコース)。
それから私は私が最初に製品を追加しようとし、その後、カテゴリを求める、とするので、それはだと思うエラー
An entity object cannot be referenced by multiple instances of IEntityChangeTracker.
を取得します。変更トラッカーは2つのコンテキストを追跡する必要があり、混乱します。私のカテゴリがあるときにカテゴリの最初のコンテキストが処分されないのはなぜですか?
どうすればよいですか?
EDIT:
_categoryServiceはProductRepositoryより別のリポジトリを使用します。
ありがとう!私はすでにいくつかの責任を変更していました。 – TanguyB