相关疑难解决方法(0)

你最喜欢的C#扩展方法是什么?(codeplex.com/extensionoverflow)

让我们列出你发布优秀和最喜欢的扩展方法的答案.

要求是必须发布完整代码并提供示例和如何使用它的说明.

基于对该主题的高度关注,我在Codeplex上设置了一个名为extensionoverflow的开源项目.

请标记您的答案并接受将代码放入Codeplex项目中.

请发布完整的源代码而不是链接.

Codeplex新闻:

24.08.2010 Codeplex页面现在在这里:http://extensionoverflow.codeplex.com/

11.11.2008 XmlSerialize/XmlDeserialize现在已实现并且已经过单元测试.

11.11.2008仍有更多开发人员的空间.;-) 现在加入!

11.11.2008第三个贡献者加入了ExtensionOverflow,欢迎来到BKristensen

11.11.2008 FormatWith现在已实现且已经过单元测试.

09.11.2008第二个贡献者加入了ExtensionOverflow.欢迎来到chakrit.

09.11.2008我们需要更多开发人员.;-)

09.11.2008 ThrowIfArgumentIsNull现在在Codeplex上实现单元测试.

.net c# extension-methods open-source

478
推荐指数
57
解决办法
12万
查看次数

参数分隔符

我有C#应用程序,我们一直在ADO.NET中编写代码.我一直在使用IDbCommandIDbConnection接口来创建跨数据库代码.

到目前为止,这一切都非常有效(跨Firebird,SQLite,SQL Server 2005和2008,Access 2007,Access 2010和Oracle 11g).

我遇到的问题是,我现在有一个我需要支持的Oracle 10g数据库.

然而,当我使用接口创建参数IDataParametercmd.CreateParamater()在10g上失败时,所有"正常"的东西,创建连接和命令都可以正常工作,因为查询中的参数语法(我正在使用参数化查询).

显然,开箱即用的Oracle 10g不支持使用该@标志.Oracle 11g,SQL Server以及提到的所有其他功能.

例如,以下查询将在10g中失败:

select * from Products where ProductId = @ProductId
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用冒号,使用上面提到的ado.net接口就可以成功,所以这个查询会成功:

select * from Products where ProductId = :ProductId
Run Code Online (Sandbox Code Playgroud)

不幸的是,冒号在大多数其他数据库实现中都不起作用.

或者是否有一个可以在Oracle 10g数据库中翻转的选项,该选项允许@使用:分隔符代替参数的分隔符.

我当前的解决方案不太理想,我有客户/客户端初始化属性ParameterDelimiter(我默认为@标志),并使用string.Format,来插入ParameterDelimiter.

有没有任何标准的方法可以做到这一点,我缺少,没有客户必须通过我的分隔符,或没有我的基础库了解数据库实现?(例如,包括ODP.NET和检查OracleConnection)

c# oracle ado.net odp.net parameterized-query

4
推荐指数
1
解决办法
975
查看次数