You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS RDS Proxy与Entity Framework Core兼容性问题求助

解决方案:AWS RDS Proxy + EF Core MySQL 出现DbUpdateConcurrencyException(实际行已更新)

问题背景

在使用.NET 6 + EF Core 7.0.8 + Pomelo 7.0.0 + MySqlConnector 2.2.6,通过RDS Proxy连接Aurora MySQL 8.0(Serverless V2)时,执行更新语句后EF Core抛出DbUpdateConcurrencyException,提示"预期影响1行但实际为0行",但目标行已成功更新。EF Core生成的SQL如下:

SET AUTOCOMMIT = 1;
UPDATE `myTable` SET `myValue` = @p0
WHERE `myId` = @p1;
SELECT ROW_COUNT();

直接连接RDS实例无此问题,仅通过Proxy连接时触发异常。


解决方案

1. 调整RDS Proxy会话固定策略

RDS Proxy的连接池复用机制可能导致ROW_COUNT()返回之前会话的操作结果,而非当前更新的结果。修改CloudFormation中DBProxyTargetGroup的配置,添加会话过滤规则:

DBProxyTargetGroup:
  Type: AWS::RDS::DBProxyTargetGroup
  Properties:
    DBProxyName: !Ref DBProxy
    DBClusterIdentifiers: 
      - !Ref Cluster
    TargetGroupName: default
    ConnectionPoolConfigurationInfo: 
      MaxConnectionsPercent: 100
      MaxIdleConnectionsPercent: 50
      SessionPinningFilters:
        - 'EXCLUDE_VARIABLE_SETS'

该配置会让Proxy在复用连接时重置会话变量,避免历史会话的ROW_COUNT()值干扰当前操作。

2. 自定义EF Core并发检测逻辑

如果Proxy配置调整无效,可直接修改EF Core的并发检测行为:

  • 关闭实体级并发检查:在实体配置中禁用并发令牌
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<MyTable>()
        .Property(e => e.MyValue)
        .IsConcurrencyToken(false);
}
  • 手动执行原生SQL并处理结果:绕过EF Core默认的并发检测逻辑
var affectedRows = await context.Database.ExecuteSqlInterpolatedAsync(
    $"UPDATE `myTable` SET `myValue` = {myValue} WHERE `myId` = {myId}; SELECT ROW_COUNT();");
// 手动根据返回的行数处理业务逻辑

3. 升级数据库驱动版本

当前使用的MySqlConnector 2.2.6和Pomelo 7.0.0可能存在与RDS Proxy的兼容性问题,尝试升级到最新稳定版本:

  • 升级Pomelo.EntityFrameworkCore.MySql至8.0.x版本(适配.NET 6/7/8)
  • 升级MySqlConnector至3.0.x及以上版本
    新版本驱动针对RDS Proxy的会话处理做了优化,可解决ROW_COUNT()返回异常的问题。

4. 开启Proxy调试日志排查

开启RDS Proxy的Debug日志,查看SQL请求转发的详细流程:
修改CloudFormation中DBProxy的配置:

DBProxy:
  Type: AWS::RDS::DBProxy
  Properties:
    ...
    DebugLogging: true
    ...

通过CloudWatch查看Proxy日志,分析ROW_COUNT()的返回值是否被Proxy篡改,进一步定位问题根源。


内容的提问来源于stack exchange,提问作者Reece Russell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 14:16:18