43

我剛剛安裝EF 4.3並試圖通過遷移升級我的項目。但我遇到問題試圖通過包管理器控制檯執行add-migration initial我的項目。在應用程序配置文件中找不到名爲'MyApplicationEntities'的連接字符串

它拋出任何異常,現在No connection string named 'MyApplicationEntities' could be found in the application config file.

現在我的配置已經說明了一切

<connectionStrings> 
<add name="MyApplicationEntities" 
    connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost;initial catalog=MyApplicationEntitiesDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" 
    providerName="System.Data.EntityClient" /> 

我不知道是什麼問題就在EF 4.3中的錯誤或有我做的不對。

我以爲this post已解決問題,但不完全。

任何人都得到了答案。

欣賞Sanj。

+0

可能重複[沒有連接字符串名爲'MyEntities'可以在應用程序配置文件中找到](http://stackoverflow.com/questions/12622408/no-connection-string-named-myentities-could- be-found-in-the-application-config) – jbtule

回答

97

啊,意外發現了這一點。

,我不得不刪除

public MasterEntities() 
    : base("name=MyApplicationEntities") 
    //  ^^^^^ 
{ 
} 

public MasterEntities() 
    : base("MyApplicationEntities") 
{ 
} 

EF 4.3不喜歡的連接字符串被稱爲name=xxxxx

+0

我試過了我的Model.COntext.cs文件,但它拋出了一個異常。 – micahhoover

+4

你有你的web.config或app.config中的連接字符串與相應的名稱?這是我最初犯的一個常見錯誤,因爲我的上下文對象位於不同的DLL中,連接信息不會自動複製到主項目中。 – Sanj

+5

EF 5.0 - 相同問題 – Lu55

35

的解決方案Sanj指出的是,你需要複製連接字符串從你的數據庫項目的App.config到web項目的web.config。我不確定爲什麼上述答案被標記爲正確。我將此添加爲答案而不是評論,以便將來的讀者能夠發現這一點。

+1

我知道這個作品,但我有一個類庫項目,並沒有配置文件 –

+1

我的帖子適用於網絡應用程序,但也許這個鏈接將幫助你。 http://www.youtube.com/watch?v=rYK0B1CQUN8如果您創建了數據類並選擇不將配置存儲在配置文件中,則可能需要在類中添加信息。 – Bill

+0

謝謝!大概2年35分鐘的愚蠢研究救了我! <3 – Maximosaic

2

我也遇到過類似的例外。 AppConfig最初是在我們生成實體模型的項目中創建的。 但是,如果您使用其他項目執行應用程序(在我的解決方案中有幾個項目),則AppConfig需要包含在正在執行的項目中。

25

我有同樣的錯誤,但我已經有一個web.config文件與正確的連接字符串名稱和DbContext聲明正確。但是,我注意到,當我使用-Verbose運行添加遷移時,它將「啓動項目」聲明爲與包含我的上下文的項目不同的項目。因此,我更改了啓動項目,重新運行了添加遷移,並且一切正常!

+0

在EF 6.0上運行時,此解決方案適用於我。 這是我發現的另一個頁面,它提供了更多的上下文:http://entityframework.codeplex.com/workitem/974 –

+0

爲我工作!謝謝 – Flappy

+0

謝謝 - 另外,將它設置爲啓動項目後,如果您已將其設置爲部分配置狀態,則可能需要使用-force參數運行Enable-Migrations。請記住先備份Migrations文件夾中的任何代碼,因爲它會被擦除。學習辛苦的方法,並感謝善良的源代碼管理。 –

5

我也有這個問題,解決它通過

  1. 選擇正確StartUp project
  2. 重新運行包管理器控制檯上的命令。

事情按預期工作。

8

確保您的statup項目配置文件具有連接字符串。此link可能會對您有所幫助。

+0

鏈接傾向於改變或缺失,你能解釋一些內容還是在這裏引用? – abarisone

+0

只檢查你的啓動項目配置文件是否有連接字符串。可能的情況是,當你把你的edmx文件放在一個類庫項目中,並在不同的項目中引用它。所以設置爲啓動的項目應該有連接字符串。 –

+0

啊!謝謝@SantoshPanigrahy。另一個偉大的Microsoft錯誤 –

0
1. ctor => Context 

    public MasterEntities() 
    : base("ConnectionStringName") 
{ 
} 

2. config file 

    <add name="ConnectionStringName" 
     connectionString="Data Source=.;Initial Catalog=DatabaseName;User Id=sa; Password=YourPass;" 
     providerName ="System.Data.SqlClient" /> 

3. in Sulation Exporer right click the project and select 'Set as 
    startup project' 

4. in PackageManagerConsole Change Default Project to Your Project of 
    context class. 

5. then: 

add-migration new 

或添加到ConnectionString中配置工作項目的文件。

相關問題