亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Dapper.Contrib 和 MiniProfiler(用于 MySql)集成問題

Dapper.Contrib 和 MiniProfiler(用于 MySql)集成問題

C#
狐的傳說 2021-07-02 14:36:08
我正在嘗試使用 MiniProfiler.Integrations.MySql 和 Dapper.Contrib 擴展來分析發送到 MySql 服務器的 sql 查詢。我正在使用我自己的 ConnectionFactory:public IDbConnection GetConnection(){    var connection = (DbConnection) new MySqlConnection(_connectionString);    return new ProfiledDbConnection(connection, CustomDbProfiler.Current);}Dapper.Contrib 允許像插入新記錄一樣簡單public async Task AddAsync(TEntity sample){    using (var connection = _connectionFactory.GetConnection())    {        await connection.InsertAsync(sample);    }}但ProfiledDbConnection被解釋為SQLConnection, 產生與 MySQL 不兼容的 SQLServer 語法: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[Id], [CreatedAt], [AndSoOn]' at line 1尋求有關如何解決問題并使 MiniProfiler 工作的建議。我正在使用(全部來自 Nuget):Dapper:1.50.5Dapper.Contrib:1.50.5 MiniProfiler:3.2.0 MiniProfiler.Integrations.MySql:1.0.1
查看完整描述

2 回答

?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

作為一種解決方法,在當前版本中,您可以像這樣覆蓋 Dapper.Contrib 中基于類型的名稱解析:

SqlMapperExtensions.GetDatabaseType = conn => "MySqlConnection";

這將覆蓋默認的connection.GetType()基于名稱的行為。盡管如此,這并不是很棒,我會看看我們是否可以在下一個 Dapper 版本中改進它。


查看完整回答
反對 回復 2021-07-10
?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

看起來我已經找到了Insert()InsertAsync()方法的解決方法,他們接受 ISqlAdapter 作為一個可選參數,這似乎解決了這個問題(但我仍然不能對Update()/使用這種方法UpdateAsync())。這是因為當您想使用MiniProfilerwithMySQL并且Dapper.Contrib需要包裝MySqlConnection導致Dapper.Contrib使用默認值 (wrong) 時ISqlAdapter。


查看完整回答
反對 回復 2021-07-10
  • 2 回答
  • 0 關注
  • 440 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號