在 BLL
public void Update(Product product)
{
if (repository.GetProductById(product.ID) != null )
{
repository.Update(product);
}
else
{
// Display errorrs
}
}
在存储库中
public void UpdateProduct(Product product)
{
_dbContext.Entry(product).State = EntityState.Modified;
_dbContext.SaveChanges();
}
public Product GetProductById(int id)
{
return _dbContext.Products.Find(id);
}
当我运行网站时,它显示此错误
“ObjectStateManager 中已存在具有相同键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。”
我知道发生了什么。当我调用 GetProductByID() 时,附加到 DbContext 的产品实体。因此,当我调用 Update() 时,它将复制 Product 实体。因为在 Update() 中,我在 DbContext 中附加了存在的实体。
解决它。我只调用Update()。但我想在更新/删除之前检查产品是否存在。
根据您的设计经验,如何以一种好的方式解决这个问题?