繁体   English   中英

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

[英]C# .NET 4 Self-Contained Oracle Driver Deployment

我想编写和部署某些软件,而无需在用户的工作站上安装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. 我想访问一些高级功能,例如实体框架。

小组可以提出建议吗?

我还要感谢上面对ldap代码的任何评论,因为这一切都在进行中。

弃用的提供程序也存在相同的问题。 我对Devart dotConnect for Oracle有了很好的经验:
http://www.devart.com/dotconnect/oracle/
它不是免费的(而且我与这家公司无关,也不会给我带来任何好处)。 它与ADO.Net的DataTable和DataSet一起使用。 自从我上次使用以来已经过去了数年,我不知道它与EF的集成程度如何。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM