C#.NET 4自包含Oracle驱动程序部署

时间:2013-12-13 10:31:53

标签: c# oracle ldap

我想编写和部署一些软件,而无需在用户工作站上安装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;
    }

到目前为止很好,但是......

  1. 该解决方案目前依赖于对我不需要/想要避免的弃用System.Data.OracleClient的引用

  2. 我想访问一些高级功能,例如Entity Framework。

  3. 小组可以提供建议吗?

    我也非常感谢上面关于ldap代码的任何评论,因为这些都是正在进行的工作。

1 个答案:

答案 0 :(得分:0)

与已弃用的提供商存在同样的问题。我用Devart dotConnect for Oracle取得了很好的成绩:
http://www.devart.com/dotconnect/oracle/
它不是免费的(我与这家公司无关,也不会以任何形式受益)。 它适用于ADO.Net的DataTable和DataSet。自从我上次使用以来已经过去了几年,我不知道它与EF的整合程度如何。