C# 无法使用EF更新记录,附加时出错
我收到这个错误: “发生引用完整性约束冲突: 定义引用约束的属性值在关系中的主体对象和从属对象之间不一致。” 尝试从前端更新我的模型时。我做了一些研究,看到一篇帖子说我应该取消我的导航属性以防止出现这种情况,所以我做了,但没有运气。我也尝试过接触并获取所有导航属性,并完全填充它们,这样我就有了完整的对象,但这也不起作用 我正在使用一个非常好的“”来为我处理状态更改和所有事情。当它进入更新方法时,它正在附加记录,并在执行此操作时爆炸 下面是在我的WebApi控制器中设置对象的代码C# 无法使用EF更新记录,附加时出错,c#,entity-framework,asp.net-web-api,C#,Entity Framework,Asp.net Web Api,我收到这个错误: “发生引用完整性约束冲突: 定义引用约束的属性值在关系中的主体对象和从属对象之间不一致。” 尝试从前端更新我的模型时。我做了一些研究,看到一篇帖子说我应该取消我的导航属性以防止出现这种情况,所以我做了,但没有运气。我也尝试过接触并获取所有导航属性,并完全填充它们,这样我就有了完整的对象,但这也不起作用 我正在使用一个非常好的“”来为我处理状态更改和所有事情。当它进入更新方法时,它正在附加记录,并在执行此操作时爆炸 下面是在我的WebApi控制器中设置对象的代码 public H
public HttpResponseMessage Put(ProductModel product)
{
if (!ModelState.IsValid)
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
var shopId = _uow.Repository<Shop>().GetShopIdByUserId("90f36c26-9b28-464d-869f-378015ae8f0c"); //work
product.ShopId = shopId;
var newProduct = Mapper.Map<Product>(product);
newProduct.Category = null;
try
{
_uow.Repository<Product>().Update(newProduct);
_uow.Save();
}
catch (DbUpdateConcurrencyException ex)
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
}
return Request.CreateResponse(HttpStatusCode.OK);
}
我使用的是WebApi v2,EF 6
编辑:
我有一个不应该发送给EF的测试数据列表,我将其置零,现在它可以工作了。有趣的是,你可以看100倍的东西,但在别人告诉你做同样的事情之前,你不能让它点击,哈哈 您确定实体对象中的所有外键都已满足要求吗?omg。。你知道我取消了所有导航属性,但这是测试数据,我还没有上传图像,但我用测试数据填充了列表。因为它们根本不存在,我没想过要把它们清除掉。。。谢谢你,克斯特扬。这很有趣,我确定,但你的评论触发了我笑
public virtual void Update(TEntity entity)
{
_dbSet.Attach(entity); // **Blows up here**
((IObjectState)entity).State = ObjectState.Modified;
}