文章目錄
Dapper 讀取 Oracle 資料
Dapper 身為輕量級 ORM 的神器,自從蔡煥麟老師 - 好用的微型 ORM:Dapper 與 黑大 - 短小精悍的.NET ORM神器– Dapper 撰文推廣後,讓愈來愈多人了解到 Dapper 的強大之處。而身為 ORM 愛用者,我也大量應用在實際專案上,使用上非常輕鬆寫意,直到後來工作上的 database 由 SQL Server 轉換為 Oracle
今天又遇到相同錯誤,紀錄一下,以後再遇到比較好抄XD
原始寫法
string cnstr = "Data source=YowkoOracle;User id=YowkoOracle_WRITE;Password=password;";
using (var cn = new System.Data.OracleClient.OracleConnection(cnstr))
{
cn.Open();
var result = cn.Query<string>(@"select TOKEN from TRIGGERTOKEN where ISACTIVE=1 and TOKEN=:token", new { token = "3D5998FASDF4531FDSAF64A4E" }).FirstOrDefault();
result.Dump();
}
OracleConnection is Obsolete
既然微軟已標記為過時,當然就不該繼續使用,避免出現 bug 跟可能的問題
改使用 Oracle.DataAccess.Client
使用 x86 版本
- NuGet 下載
- ID:Oracle.DataAccess.x86
實際 x64 版本無法成功連線AnyCPU 版- NuGet 下載
- ID:Oracle.ManagedDataAccess
namespace 與 x86 不同,要留意
using (var cn = new Oracle.ManagedDataAccess.Client.OracleConnection(cnstr))
錯誤訊息:
ORA-12154: TNS: 無法解析指定的連線 ID
- 當時未能查明原因,推估應是測試當下 tns.ora 設定有誤造成
2017/11/18 重新 review 後,發現內文有錯,正確用法連結: Dapper 讀取 Oracle 資料 - 更新版 (使用 Oracle.ManagedDataAccess )
完整程式碼
string cnstr = "Data source=YowkoOracle;User id=YowkoOracle_WRITE;Password=password;"; using (var cn = new Oracle.DataAccess.Client.OracleConnection(cnstr)) { cn.Open(); var result = cn.Query<string>(@"select TOKEN from TRIGGERTOKEN where ISACTIVE=1 and TOKEN=:token", new { token = "3D5998FASDF4531FDSAF64A4E" }).FirstOrDefault(); result.Dump(); }
參數與 SQL Server 用法不同
Oracle 與 SQL Server 在 sql secript 中使用參數寫法不同
Oracle 寫法為
:Variable
var result = cn.Query<string>(@"select TOKEN from TRIGGERTOKEN where ISACTIVE=1 and TOKEN=:token", new { token = "3D5998FASDF4531FDSAF64A4E" }).FirstOrDefault();
SQL Server 寫法為
@Variable
var list = cn.Query<Guid>("SELECT TOKEN FROM [TRIGGERTOKEN] where isActive=1 and token=@token", new { token = "3D5998FASDF4531FDSAF64A4E" }).FirstOrDefault();
心得
不知道是不是我不熟悉 Oracle 的關係,覺得 dapper 連線 Oracle 要注意的東西還不少,這個不做筆記,我想下次我還是會花不少時間
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-03
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。