我想编写和部署一些软件,而无需在用户工作站上安装Oracle驱动程序,而是希望将所需的一切复制到网络位置,并让用户从那里启动。
我已成功建立OracleConnection
,方法是将以下内容部署到应用程序的文件夹中。 (我从Oracle提供的instantclient-basiclite-nt-11.2.0.3.0中获取了这些内容)
oci.dll
ociw32.dll
orannzsbb11.dll
oraocci11.dll
oraociicus11.dll
我发现这适用于LDAP查询以建立连接字符串的DataSource=
部分。我使用的代码如下 - 我希望这对某人有用。
List<string> LDAPServers
string OracleInstance
private string GetOracleNetDescriptor()
{
string result = null;
foreach (string ldapserver in LDAPServers)
{
try
{
DirectoryEntry de = new DirectoryEntry(String.Format("LDAP://{0}", ldapserver), null, null, AuthenticationTypes.Anonymous);
DirectorySearcher ds = new DirectorySearcher(de);
ds.PropertiesToLoad.Add("orclnetdescstring");
ds.SearchScope = SearchScope.Subtree;
ds.Filter = String.Format("(CN={0})", OracleInstance);
SearchResult sr = ds.FindOne();
if (sr != null)
{
result = Encoding.Default.GetString(sr.Properties["orclnetdescstring"][0] as byte[]);
break;
}
}
catch
{
result = null;
}
}
if (result == null)
throw new Exception(String.Format("Failed To Identify Oracle Instance '{0}' From LDAP", OracleInstance));
else
return result;
}
到目前为止很好,但是......
该解决方案目前依赖于对我不需要/想要避免的弃用System.Data.OracleClient
的引用
我想访问一些高级功能,例如Entity Framework。
小组可以提供建议吗?
我也非常感谢上面关于ldap代码的任何评论,因为这些都是正在进行的工作。
答案 0 :(得分:0)
与已弃用的提供商存在同样的问题。我用Devart dotConnect for Oracle取得了很好的成绩:
http://www.devart.com/dotconnect/oracle/
它不是免费的(我与这家公司无关,也不会以任何形式受益)。
它适用于ADO.Net的DataTable和DataSet。自从我上次使用以来已经过去了几年,我不知道它与EF的整合程度如何。