可以看到,這個類,是實現了一個接口的。說明,原作者給我們預留了接口去自己實現其他內容。
繼續看看接口:
接口的內容很簡單,就是一個AddParameters方法。
那麼,可以確定,上面的猜測是對的。
我們直接擴展實現這個接口就可以了。如圖:
自己去創建一個實現了IDynamicParameters的類OracleDynamicParameters。
然後參照原作者提供的DynamicParameters類來實現這個接口。
最終修改版如下(代碼多,展開了直接貼到你的文件裡面):
View Code
ok,擴展寫完了,來一個單元測試,試一試:
1 /// <summary>
2 /// 執行帶參數存儲過程,並返回結果
3 /// </summary>
4 public static void ExectPro()
5 {
6 var p = new OracleDynamicParameters();
7 p.Add("beginTime", 201501);
8 p.Add("endTime", 201512);
9 p.Add("targetColumn", "tax");
10 p.Add("vCur", OracleDbType.RefCursor, ParameterDirection.Output);
11 using (IDbConnection conn = new OracleConnection(SqlConnOdp))
12 {
13 conn.Open();
14 var aa = conn.Query("p_123c", param: p, commandType: CommandType.StoredProcedure).ToList();
15 aa.ForEach(m => Console.WriteLine(m.C_NAME));
16 }
17 Console.ReadLine();
18 }
結果執行通過,並打印了首列的所有值。 那麼,Dapper的簡單擴展就完成了。 寫在後面 補充說明: 我用的Oracle驅動是ODP.NET,.net是4.0 這個ODP.NET的Oracle.DataAccess.dll推薦從你的目標服務器,復制回來,不要用本地的,反正我用本地的,就提示外部程序錯誤。猜測是版本問題或者是位數問題。