在BLL中
在代码仓库中。
当我运行网站时,会显示以下错误信息:
“在ObjectStateManager中已经存在具有相同键的对象。ObjectStateManager无法跟踪具有相同键的多个对象。”
我知道出了什么问题。当我调用GetProductByID()时,产品实体与DbContext相关联。因此,当我调用Update()时,它将复制产品实体。这是因为在Update()中,我将现有的实体附加到了DbContext中。
为解决这个问题,我只需要调用Update()。但是,在更新/删除之前,我想要检查产品是否存在。
根据您的设计经验,如何以良好的方式解决这个问题?
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()时,它将复制产品实体。这是因为在Update()中,我将现有的实体附加到了DbContext中。
为解决这个问题,我只需要调用Update()。但是,在更新/删除之前,我想要检查产品是否存在。
根据您的设计经验,如何以良好的方式解决这个问题?