Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#.NET 4自包含Oracle驱动程序部署_C#_Oracle_Ldap - Fatal编程技术网

C#.NET 4自包含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

我想编写和部署一些软件,而不需要在用户的工作站上安装Oracle驱动程序,相反,我想将所需的所有内容复制到网络位置,以便用户从那里启动

通过将以下内容部署到应用程序文件夹,我已成功建立了
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;
        }