错误消息:
附加一个类型为 'FaridCRMData.Models.Customer' 的实体失败,因为另一个具有相同主键值的实体已经存在。 当使用
Attach()
方法或将实体状态设置为“未更改”或“已修改”时,如果图形中的任何实体存在冲突的键值,则可能会发生此情况。这可能是因为一些实体是新的,并且尚未接收到数据库生成的键值。在这种情况下,请使用“Add”方法或“Added”实体状态来跟踪图形,然后根据需要将非新实体的状态设置为“未更改”或“已修改”。
我的代码:
public class FactorController : Controller
{
public JsonResult SaveFactor(Factor factor,int id)
{
if (id > 0)
{
bool result = new FactorService.BaseService.Update(factor);
return new JsonResult() { Data = result };
}
}
}
FactorService.BaseService.cs:
public bool Update(TEntity entity)
{
var entry = context.Entry(entity);
if (entry.State == EntityState.Detached || entry.State == EntityState.Modified)
{
context.Set<TEntity>().Attach(entity);// Error Is Here
entry.State = EntityState.Modified;
context.SaveChanges();
}
return true;
}