【发布时间】:2017-05-13 13:40:29
【问题描述】:
错误消息:
附加类型为“FaridCRMData.Models.Customer”的实体失败 因为另一个相同类型的实体已经有相同的主 核心价值。 使用
Attach()方法或设置 如果图中的任何实体具有冲突的 > 键值,则将实体设置为“未更改”或“已修改”。这可能是因为有些实体是新的,尚未收到 数据库生成的键值。在这种情况下,使用“添加”方法或“添加” 实体状态来跟踪图,然后将非新实体的状态设置为 “未更改”或“已修改”(视情况而定)。
我的代码:
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;
}
【问题讨论】:
-
问题是对象已经存在于具有该 ID 的上下文中。如果它已经存在,则无需附加。
标签: c# asp.net-mvc entity-framework