c# - 乐观并发异常 - 仅在服务器上
问题描述
我的 WebAPI 在 localhost 中成功运行(使用 Angular 中的 UI 和使用邮递员),但是当我将它发布到 Azure 服务器时,它在尝试更新现有实体时开始抛出 Optimistic Concurrency Exception。即使我使用本地 Visual Studio 2019 连接服务器数据库并通过邮递员进行测试,也会出现相同的异常。
自从过去 3-4 周以来,这个问题让我发疯了。我已经确认每个属性都正确绑定,包括外键。并且服务器数据库具有与本地主机相同的所有键的表结构。
我正在使用具有存储库模式的实体框架 6、.Net 框架 4.8、SQL Server 2017(已尝试 SQL Server 2014)。
我试图解决问题但没有得到运气:
- 将 [ConcurencyCheck] 设置为属性
- 确保没有其他线程正在尝试更改实体或没有其他事务正在运行
- 禁用外键并仅更新表的单个列
- 我可以在同一张表中插入新记录
- 将数据库和 API 都发布到不同的服务器
- 尝试使用 Client wins ( https://docs.microsoft.com/en-gb/ef/ef6/saving/concurrency?redirectedfrom=MSDN ) 刷新实体并再次保存更改
我现在不知道解决这个问题。有没有人面临同样的问题?或者我缺少的任何配置或者我应该尝试吗?
请不要将此问题标记为重复,因为我尝试了在不同线程中找到的所有解决方案。
[编辑] 示例代码:
// LeadCustomer is inheriting from baseclass ModelBase which has CreatedById, CreatedDate, ModifiedById, ModifiedDate properties
LeadCustomer leadCustomer = dc.LeadCustomers.Where(c => c.Email.EmailAddress.ToLower().Equals(model.EmailAddress.ToLower())).FirstOrDefault();
if (leadCustomer == null) {
leadCustomer.FirstName = "Viral";
leadCustomer.LastName = "Maru";
leadCustomer.Email.EmailAddress = "maru.viral@gmail.com";
leadCustomer.SubscriptionTypeID = SubscriptionTypes.Monthly;
dc.LeadCustomers.Add(leadCustomer);
dc.SaveChanges();
}
解决方案
推荐阅读
- javascript - 如何隐藏每条记录的按钮
- python - 如何合并分解的 MySQL 查询的结果?
- ios - Swift 4 乘法问题
- asp.net - 错误:关键字“OR”附近的语法不正确
- javascript - 如果与特定值不匹配,则按特定值分割——javascript
- python - 输入用户被视为方法,而不仅仅是python中的常见字符串
- android - 将回收站视图数据发送到 json
- c# - Net core DbContextPool vs AddDbContextPool 等等
- javascript - 获取 Uint16Array 成员的单独低字节和高字节
- wordpress - Wordpress,自定义字段值未显示,而是通过屏幕选项使用 ACF 或标准自定义字段显示帖子 ID