2013-08-20 96 views
0

實體框架對我來說是新手我按照下面的示例創建一個帶有實體框架的wcf服務。實體框架部署問題

Introduction for Entity Framwork for Beginner

這是很簡單的,所有的事情是像自動生成的,我的數據庫位於在我的App_Data文件夾中。所以在使用visual studio運行後,我想發佈並部署到IIS服務器。

但是,當我嘗試在服務器上運行它,它返回我這個錯誤

The underlying provider failed on Open. 
    at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure) 
    at System.Data.EntityClient.EntityConnection.Open() 
    at System.Data.Objects.ObjectContext.EnsureConnection() 
    at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption) 
    at System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() 
    at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) 
    at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) 

這是我在web.config中的ConnectionString

<connectionStrings> 
    <add name="BPMCommonEntities" connectionString="metadata=res://*/BPMCommonDB.csdl|res://*/BPMCommonDB.ssdl|res://*/BPMCommonDB.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;attachdbfilename=|DataDirectory|\BPMCommon.mdf;integrated security=True;user instance=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
</connectionStrings> 

我還沒有在它改變任何東西,沒有按和也不知道要改變什麼。

我錯過了什麼?這個錯誤來自哪裏,我應該改變什麼來解決這個問題?

+0

是否存在內部異常? –

+0

您的服務器是否也有SQL Express?如果沒有,從連接字符串中刪除\ SQLEXPRESS ... –

+0

我試圖刪除\ SQLEXPRESS它也不起作用。 –

回答

2

當你在本地機器上工作時,你有SQLExpress託管你的數據庫,當你將它部署到服務器時,你需要一個數據庫服務器來託管你的數據庫,這就是你用服務器名稱替換。\ SQLExpress的地方。

+0

我看到了,所以我需要一個數據庫服務器來承載我的mdf文件在我的app_data中...... –

+1

是的,但是這可能是一個LocalDB,但仍然需要SQL-Express。 LocalDB是MS用於開發的意思,您應該在服務器上使用「完整」SQL-(Express-)數據庫... – ChrFin

+0

在服務器環境中,您可能希望將db文件移出app_data文件夾 –