【发布时间】:2018-12-07 19:57:34
【问题描述】:
我在带有 EC Core (2.1.0-preview1-final) 的 Linux 上使用 Sql Server
我正在尝试更新来自 Web Api 服务 (PUT) 请求的一些数据。数据(票证)正确传递并反序列化为对象(票证)。
当我尝试更新时,我使用以下代码:
public Ticket UpdateTicket(Ticket ticket)
{
using (var ctx = new SupportTicketContext(_connectionString))
{
ctx.Entry(ticket).State = EntityState.Modified;
ctx.SaveChanges(); // <== **BLOWS UP HERE**
var result = ctx.Tickets
.First(t => t.TicketId == ticket.TicketId);
return result;
}
}
代码抛出如下错误:
数据库操作预计会影响 1 行,但实际上会影响 0 行。数据 自加载实体后可能已被修改或删除
- 我可以从数据库中插入和获取,没问题。
- 如果我重新启动 Visual Studio,错误通常发生在我第二次尝试更新任何票证(即任何其他票证 - 它似乎出现在第二次和后续请求中)时。
- 更新出人意料地成功了!有时我可以更新另一张票并且它通过(即使在第三次或后续请求中)
-
我尝试了对代码的一些修改,包括
ctx.Attach(票证);
但这无济于事。
如何让它成功更新数据库? 关于如何调试的任何想法?日志似乎很难设置。
非常感谢任何想法。
【问题讨论】:
-
在我的情况下,我使用了批量删除的扩展,导致错误。