2013-12-13 70 views
1

我想編寫和部署一些軟件,而不需要在用戶的工作站上安裝Oracle驅動程序,而是想將所需的所有內容複製到網絡位置,用戶從那裏啓動。C#.NET 4獨立的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代碼的任何意見,因爲這是所有工作中的進展。

回答

0

與已棄用的提供程序有同樣的問題。我已經用Devart dotConnect for Oracle取得了很好的經驗:
http://www.devart.com/dotconnect/oracle/
這不是免費的(我與這家公司沒有關係,我也不會受益)。它可以與ADO.Net的DataTable和DataSet一起使用。從我上次使用以來的幾年,我不知道它與EF的整合程度如何。

+0

它確實在您已鏈接的頁面上說它與EF兼容:http://www.devart.com/dotconnect/entityframework.html – Bridge

+0

謝謝,但第三方解決方案在這種情況下不適合我。 –