C#.NET 4自包含Oracle驱动程序部署
我想编写和部署一些软件,而不需要在用户的工作站上安装Oracle驱动程序,相反,我想将所需的所有内容复制到网络位置,以便用户从那里启动 通过将以下内容部署到应用程序文件夹,我已成功建立了C#.NET 4自包含Oracle驱动程序部署,c#,oracle,ldap,C#,Oracle,Ldap,我想编写和部署一些软件,而不需要在用户的工作站上安装Oracle驱动程序,相反,我想将所需的所有内容复制到网络位置,以便用户从那里启动 通过将以下内容部署到应用程序文件夹,我已成功建立了OracleConnection。(我从Oracle提供的instantclient-basiclite-nt-11.2.0.3.0中获取) 我发现它可以与LDAP查询一起建立连接字符串的DataSource=部分。我使用的代码如下-我希望这对某人有用 列出ldapserver string OracleInst
OracleConnection
。(我从Oracle提供的instantclient-basiclite-nt-11.2.0.3.0中获取)
我发现它可以与LDAP查询一起建立连接字符串的DataSource=
部分。我使用的代码如下-我希望这对某人有用
列出ldapserver
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
的引用,我确实需要/希望避免该引用我也希望您能对上面的ldap代码发表任何意见,因为这都是正在进行的工作。对不推荐的提供程序也有同样的问题。我与Devart dotConnect为Oracle提供了良好的到期时间:
这不是免费的(我与这家公司没有任何关系,也不会从中受益)。
它使用ADO.Net的DataTable和DataSet。自从我上次使用以来,几年过去了,我不知道它与EF的集成情况如何。您链接的页面上确实说它与EF兼容:谢谢,但我现在不选择第三方解决方案。
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;
}