Tho*_*que 17 c# oracle ado.net odp.net
我目前正在使用Oracle(System.Data.OracleClient)的Microsoft ADO.NET提供程序.我知道它肯定不是最好的Oracle提供商,它很快就会被弃用,我应该使用Oracle的ODP.NET.我仍然使用MS提供程序的原因是因为ODP.NET按位置绑定参数,而不是按名称绑定.当您在查询中使用许多参数时,这实际上可能是PITA,因为您必须小心以正确的顺序添加它们,这很容易导致错误.在同一查询中多次使用相同参数时也很烦人,例如:
SELECT A,B,C FROM FOO WHERE X = :PARAM_X OR :PARAM_X = 0
Run Code Online (Sandbox Code Playgroud)
使用ODP.NET,我必须添加两个参数OracleCommand,我认为这是愚蠢的......
ODP.NET OracleCommand有一个属性来改变默认行为:BindByName.设置为true时,参数按名称绑定,这就是我想要的.不幸的是,这对我没有帮助,因为:
DbProviderFactory,DbConnection,DbCommand...),以减少连接到任何特定的RDBMS.所以我没有访问该BindByName属性,除非我明确地转换OracleCommand,失去所有的好处或抽象.BindByName为true(我可以在Selecting事件中做到这一点,但是对于每个事件来说真的很难SqlDataSource的...)我该如何处理这个问题?BindByNameByDefault某处有设置吗?(我没有找到类似的东西,但我可能错过了......)
我认为您可以创建自己的提供程序,使用您要使用的默认值.您可以通过从odp.net继承所有类来轻松创建该提供程序,只需调整一些属性,如BindByName.
DbProviderfactory将创建您的类而不是普通的odp.net类.
| 归档时间: |
|
| 查看次数: |
15143 次 |
| 最近记录: |