2017-10-18 132 views
0

我已经看过有关此错误的其他解决方案,但我相信我的问题是不同的。因为他们不工作。不可能的错误:存储更新,插入或删除语句影响了意外的行数

我有一个Azure App Services后端。它使用ASP.NET和Entity。 由于一些奇怪的原因,我无法将一个新条目插入到我的一个表中。 只有这一张桌子,没有任何改变。我明白为什么在正常情况下会抛出此错误,但在我保存更改时没有任何更改。

东西如此简单,被引发错误:

var client = new Client() { Id = Guid.NewGuid().ToString(), CompanyID = "guid-fk-in-other-table" }; 
context.Clients.Add(client); 
context.SaveChanges(); 

当我步骤通过与调试器时,context.Clients.Add(客户端);线需要很长的执行和输出窗口显示了一堆无用的例外,如:

Exception thrown: 'System.Data.Entity.Infrastructure.DbUpdateConcurrencyException' in EntityFramework.dll 

表架构是相同的数据对象我。我越来越绝望,不知道如何从这里诊断。任何帮助都不胜感激!

+0

您是否有触发器可能会回滚该表上的更改?这里有几种可能性......也许锁定......错误是我的经验中的一个通用的“行没有更新”。 – Twelfth

+0

除了一个移动应用程序创建的表格上没有触发器(插入/更新/删除更新“UpdatedAt”时间戳 –

+0

我能做的大部分事情是添加故障排除提示,不幸的是这是一个模糊的错误。 ()返回一个有效值(尝试硬编码为id = 10101,CompanyID =“guid-fk-in-other-table”),如果这样,那么那个newguid函数有问题)?你可以通过一个不同的工具插入(表可能被别人锁定)吗?是否有FK被侵犯会阻止插入(如果是这样的话,这应该会返回更详细的错误)?对不起,没有确切的答案 – Twelfth

回答

0

好了,经过几个星期的调试,终于想出了这一个。

在此表上实现了行级安全性。出于某种原因,如果当前用户未传递访问谓词,则实体无法添加行。我可以通过SQL直接插入行,但不通过策略,所以这导致了混淆。 我猜Entity试图阅读条目?

无论如何, 然后,我删除了政策和事情的工作,因为他们应该。他们以前工作的原因是因为调用应用程序已缓存凭据,满足安全策略。一旦我清除它们,问题就出现了。 在调试器的例外中,我绝对没有发现任何可以让我得出这个结论的东西,但指出安全策略出错的例外会受到欢迎。

相关问题