2017-10-10 17 views
2

DapperのSQL暗黙変換を防止するにはどうすればよいですか?SQLとDapperパフォーマンス暗黙変換

私たちはSQL暗黙の変換を実行しており、索引スキャンとデッドロックが発生していることを認識しました。 Dapperパラメータはnvarcharですが、SQLテーブルの列はvarcharです。これにより、すべてのSQL列がnvarcharに変換されました。 cast(@SSN as varchar(9)), cast(@LastName as varcarh(25)), cast(@EmployeeId as varchar(10)

はもっと簡単な方法があるように持っているよう

我々はすべて私たちの組み込みDapperのコードを通過すると列を変換することによって、問題を修正し、あるのでしょうか?

私たちは、この例のように文字列を設定していないを除いて、私は、このブログを読んで:

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" /> 

答えて

1

あなたはvarchar型ではなく、nvarchar型

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

として常にあなたの文字列を提出するDapperのを設定することができCan AnsiStrings be used by default with Dapper?

も参照してください