又见System.Data.OracleClient命名空间停产?
(首先不要惊慌的是,没有被微软删除System.Data.OracleClient的,然而它是不是在.NET 4.0的客户端版本)
这通过使用System.Data.OracleClient的使用是可能的, 但是微软已经决定弃用OracleClient的 。 (OracleClient的是由微软和船舶发展作为.NET Framework的一部分用于Oracle的ADO.NET提供。)
你可以使用ODP.Net,但是你希望你的SQL Server的客户必须安装ODP.Net? (你希望你的任何客户有安装Oracle软件?)
DataDirect的是不是一种选择,因为它的成本一只胳膊和一条腿; 如果你需要一台服务器连接到大型机可能只是买得起。 然而,它并不指望所有的客户购买它的一个选项。
移动形态C#与Java是不是一个好的选择,因为我是一个C#程序员,并希望能够谋生!
这样能支持多个RDBMS的ISV大多数我们只需要一个解决方案,使我们能够使用Oracle的小部分是一样的SqlServer。 因此System.Data.OracleClient的对我们来说足够强大。
(也许我们应该开始存储在平面文件中的所有数据,让客户的DBA停止试图告诉我们如何编写软件。甲骨文数据库管理员都糟了!)
我真正的问题是我怎么能写会谈到Oracle .NET软件就是我们的痛苦自由安装为会谈SqlServer的.NET软件。 不必使用ODP.NET只是让Oracle客户端安装但更痛苦的,但有更多的出毛病。
如果我是用JAVA我可以只使用JDBC类型4驱动程序。 微软提供了一个使用Sql Server和Oracle提供了一个用于Oracle。 然而似乎甲骨文希望使净使用硬如可能的,微软希望让Oracle使用硬如可能的。
到目前为止, 最好的选择看起来像devArt的dotConnect 。
但是我开始怀疑天气.NET为ISV良好的发展体系,迟早你总是得到一个客户,要求Oracle支持。 在Java世界里,他们似乎这个问题很好解决。
它看起来像甲骨文可能即将带出senible完全托管ADO.NET提供themselfs它甚至可能是易于安装! 看到这里 ,声称β - 2011年,生产- 2011年底。
Answer 1:
编辑:全面管理ODP.NET现在是在生产使用。 这是非常小(小于10MB),而且不依赖于其他文件。 你可以在这里获得它:
http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html
原来的答案:
一种方法可以轻松地确保所需的Oracle客户端软件(包括ODP.NET)总是可用的部署机器上是与您的应用程序中嵌入它。 ODP.NET已经变得容易了很多 ,现在要嵌入该XCOPY ODP.NET是可用的。 你可以从这个链接下载:
http://www.oracle.com/technology/software/tech/windows/odpnet/index.html
随着XCOPY ODP.NET,所有你需要的,当你部署应用程序做的是以下几点:
1)您的应用程序复制到目标机器
2)运行“INSTALL.BAT”的拷贝几个DLL甲骨文公司到目标机器(包括ODP.NET和Oracle客户端(OCI)软件)
3)运行“configure.bat”,这确实是“GACUTIL”和更新目标计算机的注册表
4)提供连接字符串信息应用程序。 您可以使用EZCONNECT连接字符串(“主机名@服务名”)或您(或您的客户)可以通过设置TNS_ADMIN注册表项或环境变量指向具有SQLNET连接已配置的别名另一个Oracle家庭共享已有的SQLNET配置。
而已! 这是真的那么简单。
我希望你能好好看看ODP.NET XCOPY在上面的链接看到自己是多么容易,这些天来嵌入ODP.NET与您的应用程序。
补充说明:
如果您选择不嵌入ODP.NET与您的应用程序,在微软OracleClient的双方的情况和ODP.NET的情况下,需要安装任何部署的机器上附加的Oracle客户端(OCI)软件。 这两种情况之间的唯一区别是,当你使用ODP.NET,它也需要在部署计算机上存在。 好消息是,一个典型的Oracle安装客户机上包括ODP.NET了。
现在,如果你的目标机器上已经安装ODP.NET你不需要做任何事情。 你只需要分发应用程序。 如果确实需要使用标准的安装程序安装ODP.NET,你也可以从上面提供的链接下载。 该标准ODP.NET安装只需要几分钟的时间,并为你配置的一切。
再次,你可以使用EZCONNECT连接字符串,以使网络配置一块蛋糕,或者使用TNS_ADMIN注册表项或环境变量趁预先存在的连接,你的客户已经习惯了使用别名。
希望这可以帮助,
基督教吉文
神谕
欢迎随时访问我们的功能要求网站提供您就这个问题和其他未来功能的反馈意见: http://apex.oracle.com/pls/apex/f?p=18357:46
Answer 2:
你看着替代甲骨文供应商,如devArt的dotConnect ? 该驱动程序,作为一个例子,是100%的托管代码,支持许多高级的Oracle特性,提供了实体框架的支持(这会是有一天在ODP.NET,我敢肯定)。
还有一堆的,我们没有得到,直到ODP.NET 11g版本的其他功能(如ASP.NET提供程序模型的支持)。 漂亮宽松的许可和价格合理。 此外,用它自己的探查,如果我没有记错。
在他们的测试中 ,执行相比毫不逊色于ODP.NET。 我很想你点的东西开源,但以我的经验,一旦你买了到Oracle的数据库,你已经接受了这个事实,你会放下一些现金为你的数据库相关的工具。
Answer 3:
有被弃用和移除之间有很大的区别。
如果你只是使用的功能子集是常见的SQL Server和Oracle,那就应该罚款通过对ASP.Net 4.0移动并继续程序,你现在怎么办。
使用类似EntitySpaces ,将让你比较提供商无关。 (它使用OracleClient的,在它的DAL)
与菲利普有关Oracle客户端软件是一个痛苦完全同意。 我已经记不清我已经安装了它的次数和讨厌的经验。 给我的MySQL,SQLServer的甚至优先接入。
(其实,我收回接入评论):-)
Answer 4:
使用“提供者工厂模式”,这基本上是使用工厂,得到完全从这里使用它的数据库请求方法抽象出来的数据提供者是一个博客帖子有一些示例代码,演示如何做到这一点也让保罗在揭秘设计模式布杜 1上dnrtv.com部分展示了如何为好。
这是一些非常酷的东西,基本上你有一个工厂提供用于获取连接的方法
public IDbConnection GetConnection()
{
IDbConnection connection = _frameworkDBProviderFactory.CreateConnection();
connection.ConnectionString = _authenticationSettings.ConnectionString;
return connection;
}
虽然接口,所以你可以调用任何类型的数据库是谁的连接对象实现IDbConnection接口(SQLSERVER,MySQL和Oracle等),它就可以工作的。
通过抽取了你的使用,你甚至可以换出来在运行时,你的应用程序将永远不会知道,它并不需要那么以连接到Orical DB,下载什么DB ODP.NET ,同样的事情与MySQL的连接器都实现的IDbConnection,写你对抽象的连接代码。
Answer 5:
In addition to what others have suggested you could consider using the Provider pattern and Oracle's ODP.NET.
Answer 6:
作为独立的数据库是一个非常艰难的工作,因为有很多具体的事情(绑定变量命名,对象报价,...)。 使用就像一个图书馆的NHibernate这使您的应用程序与真正的数据库之间的层。
如果您需要连接到这两个数据库,比它的部署问题。 如果您连接到Oracle(System.Data.OracleClient的使用或Oracle.DataAccess.Client),你需要在计算机上安装Oracle客户端软件。 部署架构的数据库提供商是不够的,连接到Oracle数据库。
如果您连接到Oracle,你必须从安装Oracle软件。 如果你害怕弃用,比安装和使用ODP.Net。 有一些区别的2 Oracle数据库提供者之间。
为了更好地部署Oracle引入的概念即时客户端 。 此客户端可以使用Xcopy部署部署。 正弦甲骨文11即时客户端可以与ODP.Net捆绑在一起。
ODP.Net的安装基督教吉文的职位描述。
该Oracle.DataAccess组件不能在模具全局程序集缓存。 把它放在你的bin目录。 通过Oracle.DataAccess使用的即时客户端不能在客户端计算机上不同的目录。 把它放在你的bin目录。 该文档描述了如何配置你的应用程序找到一个即时客户端。
Answer 7:
Answer 8:
不应该使用人ADO.NET实体框架现在呢? 见https://stackoverflow.com/questions/82644/can-you-use-microsoft-entity-framework-with-oracle
Answer 9:
只要你不调用ODP.Net对象,你并不需要安装ODP如果你只访问SQL Server。
Answer 10:
我相信,ODBC仍然可以使用一些透明度都SQL Server和Oracle,所以我会看看使用ADO.Net与ODBC供应商。 它不会给你所有的性能或功能的SqlClient或OracleClient的会,但它应该是相当接近的Oracle或SQL Server相同的代码。
Answer 11:
您可以考虑使用亚音速3.0 ! 我有它在运行时运行我的SQLServer,MySQL为基础和SQLite应用程序,用户可以在这些3之间切换!
Answer 12:
根据我的经验,你不能简单地部署ODP.NET数据提供程序DLL。 Oracle要求任何超过(例如,我们使用LDAP名称解析,需要在一个特殊的家庭路径的LDAP.ora文件)的默认配置的详细家庭安装。
然而,ODP.NET实现了ADO.NET 2.0标准就好(DbProviderFactory等)。 我已经没有任何需要对特定类的一段时间在我的公司对编程基类(的DbConnection,DbCommand和等)。
我使这一数据访问工作的建议是使用/遵循的指导Entlib或使用NHibernate的 。
如果你有一个物流或IT问题,安装ODP.NET或者让你的顾客/客户,我建议你跟你的IT人员和Oracle有关该解决方案。
Answer 13:
客户应在有计算机上安装odp.net和Oracle客户端。 你不应该部署它。 您的应用程序会发现在GAC所需的Oracle DLL的。
文章来源: How to write a .Net application that works with both SqlServer and Oracle (now that System.Data.OracleClient is deprecated)