2011-11-17 60 views
3

我成功運行了通過WCF測試客戶端的測試,直到我嘗試使用實體框架提取數據。WCF&Entity Framework&SQL Server - 「基礎提供程序在打開時失敗」

爲了確保我沒有做任何愚蠢的事,我從網上下載本教程中,這是做類似的事情示例代碼:http://www.codeproject.com/KB/WCF/WCFandEF.aspx

...當我運行它,我得到了同樣的錯誤類似的地方:

var productEntity = (from p in context.ProductEntities 
        where p.ProductID == id 
        select p).FirstOrDefault(); 

的錯誤是

基礎提供失敗的打開。

我可以從具有相同連接字符串的「普通應用程序」打開數據庫,它似乎是特定的從WCF測試客戶端訪問數據庫。

在此處和Google上進行調查以瞭解「底層提供商在Open上失敗」。通常表示這是一個連接字符串問題,但我很確定它不是這種情況。

所以現在我期望它是某種權限問題。

我使用SQL Server和Windows 7,使用Visual Studio 2010

我一直在敲打從昨天起我的頭,所以任何幫助或保護頭盔讚賞。

編輯,包括連接字符串

<add name="NorthwindEntities" 
    connectionString="metadata=res://*/Northwind.csdl|res://*/Northwind.ssdl|res://*/Northwind.msl;provider=System.Data.SqlClient;provider 
connection string=&quot;Data Source=localhost;Initial Catalog=Northwind;User ID=sa;MultipleActiveResultSets=True&quot;" 
    providerName="System.Data.EntityClient" /> 
+1

你能分享你的連接字符串嗎? – flipchart

+0

您是否啓用了「Drop Database」作爲初始化程序並同時打開MS SQL Management Studio?那會導致這樣的例外,因爲你不能在那個時候刪除數據庫,並且EF失敗。 – UrbanEsc

+0

@flipchart - 我已經編輯了上面的內容,添加 – iKode

回答

5

此錯誤意味着100%有問題的連接的字符串中。

創建一個可靠的工作連接字符串的一個好方法是創建一個新的(虛擬)項目,爲其添加一個實體框架數據模型,選擇「從數據庫生成模型」,選擇所需的連接,然後單擊「測試Conntection「來確定它的工作原理。
確保在App.Config中保存實體連接設置爲:
在您的web/app.Config中,您可以將連接字符串複製粘貼到您自己的項目中

+1

請注意,「底層提供商在Open上失敗」也可能是由於授權問題。如果是這種情況,內部例外將會聲明。可能出現這種情況的一個例子是UAC打開並且數據文件存儲在「Program Files」目錄中。 – teynon

1

嗯,我有好幾天同樣的錯誤...... actualy兩天是我找到了解決方案 Alhamdul illah ..

至於我......我在我的實體服務連接上設置了Windows身份驗證..所以我做了什麼,我去了IIS 7應用程序池高級設置的Web服務...更改身份從'ApplicationPoolIdentity'設置爲'Network Service',我也設置了我當前的用戶名和密碼。

我以後可能會遇到一些其他問題,我仍然會說好開始:-)!

相關問題