2017-01-03 26 views
0

它是一個非常具體的錯誤消息,但我找不到問題。無法找到請求的網絡框架數據提供程序

我有一個需要與數據庫進行通信的窗口服務,爲我做到以下幾點:

string provider = "Devart.Data.PostgreSql"; 
DbProviderFactory factory = DbProviderFactories.GetFactory(provider); 

但它崩潰了,給我這個錯誤:

System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed. at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName)

我試着將Devart.Data.PostgreSql.dll移到bin文件夾中,但結果相同。

然後我檢查了我的machine.config,我有這樣的:

<add name="dotConnect for PostgreSQL" 
    invariant="Devart.Data.PostgreSql" 
    description="Devart dotConnect for PostgreSQL" 
    type="Devart.Data.PostgreSql.PgSqlProviderFactory, Devart.Data.PostgreSql, Version=7.4.506.0, Culture=neutral, PublicKeyToken=09af7300eec23701" /> 

因此,它看起來正確的,我沒有發現任何空標籤,發現在其他SO帖子,說刪除這些標籤當空虛可以解決問題,但我沒有任何。

所以我不知道是什麼問題。

我還創建了一個控制檯項目,它使用相同的.NET版本,並用確切的代碼:

string provider = "Devart.Data.PostgreSql"; 
DbProviderFactory factory = DbProviderFactories.GetFactory(provider); 

和它的作品。有誰知道它會是什麼?

+0

錯誤發生在哪裏?是否在DbProviderFactory工廠= DbProviderFactories.GetFactory(provider); – Woot

+0

是的。該行發生錯誤。 – alface

+0

你已經添加了Devart.Data.PostgreSql.dll作爲你的項目的參考? – Woot

回答

0

我一直在使用DevArt libs一會兒,雖然我沒有遇到你的具體問題,但我可以告訴你部署了代碼需要添加一個許可證文件。

它應該被稱爲licenses.licx,看起來像這樣:

Devart.Data.PostgreSql.PgSqlConnection, Devart.Data.PostgreSql 

將它添加到您的項目作爲嵌入資源。如果你添加它然後認爲「它去了哪裏?」 :即使添加了它,它也不會顯示在您的解決方案資源管理器中,除非您單擊顯示全部按鈕。

你需要在你的配置文件中的以下內容:

<entityFramework> 
    <providers> 
     <provider invariantName="Devart.Data.PostgreSql" type="Devart.Data.PostgreSql.Entity.PgSqlEntityProviderServices,Devart.Data.PostgreSql.Entity.EF6, Version=7.6.743.0, Culture=neutral, PublicKeyToken=09af7300eec23701" /> 
    </providers> 
    </entityFramework> 

    <system.data> 
    <DbProviderFactories> 
     <remove invariant="Devart.Data.PostgreSql" /> 
     <add name="dotConnect for PostgreSQL" invariant="Devart.Data.PostgreSql" description="Devart dotConnect for PostgreSQL" type="Devart.Data.PostgreSql.PgSqlProviderFactory, Devart.Data.PostgreSql, Version=7.6.743.0, Culture=neutral, PublicKeyToken=09af7300eec23701" /> 
    </DbProviderFactories> 
    </system.data> 

如果你沒有得到的版本號適合你,它不會工作,以便檢查庫。 右鍵單擊Devart.Data.Postgresql.dll,然後選擇「屬性」,「詳細信息」以獲取正確的版本號。

如果這不起作用,請聯繫DevArt的技術支持。即使您只使用試用版本的庫,它們也非常有幫助。

HTH,

Adam。

+0

幾乎忘了 - 確保您的項目中的devart庫「Copy local」設置爲true。 –

相關問題