nopcommerce 1.9に問題があり、本当に助けてください。IEntityChangeTrackerの複数のインスタンスでエンティティオブジェクトを参照できません
私がやっている仕事は、既存の機能に製品インポータを追加することです。
iisresetの後で初めて実行すると、インポータは正常に動作します。しかし、その後の2回目以降には上記のエラーが発生します。これは、次のコードIoC.Resolve()。UpdateProduct(product)を実行すると常に発生するようです。
/// <summary>
/// Updates the product
/// </summary>
/// <param name="product">Product</param>
public void UpdateProduct(Product product)
{
if (product == null)
throw new ArgumentNullException("product");
product.Name = CommonHelper.EnsureNotNull(product.Name);
product.Name = CommonHelper.EnsureMaximumLength(product.Name, 400);
product.ShortDescription = CommonHelper.EnsureNotNull(product.ShortDescription);
product.FullDescription = CommonHelper.EnsureNotNull(product.FullDescription);
product.AdminComment = CommonHelper.EnsureNotNull(product.AdminComment);
product.MetaKeywords = CommonHelper.EnsureNotNull(product.MetaKeywords);
product.MetaKeywords = CommonHelper.EnsureMaximumLength(product.MetaKeywords, 400);
product.MetaDescription = CommonHelper.EnsureNotNull(product.MetaDescription);
product.MetaDescription = CommonHelper.EnsureMaximumLength(product.MetaDescription, 4000);
product.MetaTitle = CommonHelper.EnsureNotNull(product.MetaTitle);
product.MetaTitle = CommonHelper.EnsureMaximumLength(product.MetaTitle, 400);
product.SEName = CommonHelper.EnsureNotNull(product.SEName);
product.SEName = CommonHelper.EnsureMaximumLength(product.SEName, 100);
if (!_context.IsAttached(product))
_context.Products.Attach(product);
_context.SaveChanges();
if (this.CacheEnabled)
{
_cacheManager.RemoveByPattern(PRODUCTS_PATTERN_KEY);
_cacheManager.RemoveByPattern(PRODUCTVARIANTS_PATTERN_KEY);
_cacheManager.RemoveByPattern(TIERPRICES_PATTERN_KEY);
_cacheManager.RemoveByPattern(CUSTOMERROLEPRICES_PATTERN_KEY);
}
//raise event
EventContext.Current.OnProductUpdated(null,
new ProductEventArgs() { Product = product });
}
私は技術(ObjectContexts)のこのタイプの非常に多くの経験を持っていないので、完全なソリューションを提供することができれば、それは非常に高く評価されるだろう。これが呼び出すコードは以下の通りです。私はインターネット上でこのエラーの例をたくさん見てきましたが、うまく動作する解決策を見つけられませんでした。私が読んだところで、明らかに起こっていることは、製品が2つの異なるObjectContextにアタッチされていることです。私はこれがここで起こっていると仮定していますが、どこ/なぜを見つける技術については十分に分かりません。私はSaveChangesの後に切り離してみました。次回は同じオブジェクトを再接続しないようにしましたが、それは解決策ではありませんでした。...
多くのありがとう、アドリアン。
デバッグ時に、Attach(product)文が実行されますか? –
それはそれが誤りである行です。 – ajbrun