【问题标题】:SQL and Dapper Performance Implicit ConversionSQL 和 Dapper 性能隐式转换
【发布时间】:2017-10-10 05:19:40
【问题描述】:

我们如何防止 Dapper 中的 SQL 隐式转换?

我们意识到,我们正在执行 SQL 隐式转换,导致索引扫描和死锁。 Dapper 参数是 nvarchar,而 SQL 表列是 varchar。这导致我们所有的 sql 列都转换为 nvarchar。

我们通过检查所有嵌入式 Dapper 代码并将列转换为 cast(@SSN as varchar(9)), cast(@LastName as varcarh(25)), cast(@EmployeeId as varchar(10) 来解决此问题

一定有更简单的方法,是吗?

我读了这篇博客,除了我们没有像这个例子那样设置字符串:

new { queryPlanHash = args[0], startDate = DateTime.Today.AddDays(-7) });

https://www.codeproject.com/articles/594133/bepluscarefulpluswithplusvarcharsplusinplusdapper

我们可以在连接字符串中更改什么吗?

FinanceConnectionString "providerName="System.Data.SqlClient" connectionString="Data Source=(local);Initial Catalog=FinanceData;integrated security=SSPI;persist security info=False; Trusted_Connection=Yes" />

【问题讨论】:

    标签: c# sql-server orm deadlock dapper


    【解决方案1】:

    您可以将 Dapper 配置为始终以 varchar 而不是 nvarchar 形式提交您的字符串

    Dapper.SqlMapper.AddTypeMap(typeof(string), System.Data.DbType.AnsiString);
    

    另请参阅Can AnsiStrings be used by default with Dapper?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多