将 Dapper 与返回游标的 Oracle 存储过程结合使用
如何将 Dapper 与返回游标的 Oracle 存储过程一起使用?
var p = new DynamicParameters();
p.Add("foo", "bar");
p.Add("baz_cursor", dbType: DbType.? , direction: ParameterDirection.Output);
这里,DbType是System.Data.DbType,它没有Cursor成员。我尝试过使用 DbType.Object,但这不适用于 OracleClient 和 OracleDataAcess。
使用 OracleType 或 OracleDbType 的可能方法是什么?
How would one go about using Dapper with Oracle stored procedures which return cursors?
var p = new DynamicParameters();
p.Add("foo", "bar");
p.Add("baz_cursor", dbType: DbType.? , direction: ParameterDirection.Output);
Here, the DbType is System.Data.DbType which does not have a Cursor member. I've tried using DbType.Object but that does not work with both OracleClient and OracleDataAcess.
What would be a possible way to use OracleType or OracleDbType instead?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
感谢这里的解决方案。我使用简单的 DynamicParameter 装饰器用更少的代码实现了同样的效果:
Thanks for the solution here. I achieved the same thing with a little less code using a simple DynamicParameter decorator:
您必须实现:
然后在
AddParameters
回调中,您将IDbCommand
转换为OracleCommand
并添加数据库特定参数。You would have to implement:
Then in the
AddParameters
callback you would cast theIDbCommand
to anOracleCommand
and add the DB specific params.将 this 类添加到您的项目中
,您的代码应如下所示:-
Add this class to your project
and your code should like below :-
只是为了详细说明萨姆的建议,这就是我的想法。请注意,此代码很脆弱,现在仅适用于 Oracle。
修改Dapper 1.7
测试代码
Just to elaborate on Sams suggestion here's what I came up with. Note that this code is brittle and is now just for Oracle.
Modified Dapper 1.7
Test code