5 c# sql-server orm deadlock dapper
我们如何防止 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) });
Run Code Online (Sandbox Code Playgroud)
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" />
Run Code Online (Sandbox Code Playgroud)
您可以将 Dapper 配置为始终以 varchar 而不是 nvarchar 形式提交字符串
Dapper.SqlMapper.AddTypeMap(typeof(string), System.Data.DbType.AnsiString);
Run Code Online (Sandbox Code Playgroud)
另请参阅AnsiStrings 可以默认与 Dapper 一起使用吗?
| 归档时间: |
|
| 查看次数: |
1688 次 |
| 最近记录: |