摘要:[WebConfig] 例外狀況: 對應和中繼資料資訊中找不到指定的預設 EntityContainer
我們在專案當中建立了一個 ADO.NET Entity Data Model
類別名稱: MyEntity
Namespace: MyProject.Data
在 WebConfig 中的連線字串如下
<connectionStrings>
<add name="MyDB_Entity" connectionString="metadata=res://*/Data.MyEntity.csdl|res://*/Data.MyEntity.ssdl|res://*/Data.MyEntity.msl;provider=System.Data.SqlClient;provider connection string="data source=192.168.10.10;initial catalog=MyDatabase;user id=myUserName;password=XXXXXXXXXX;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
因為程式需要,我手動修改了 ConnectionString 的值 ,然後每次執行執行自己的函式來取得 MyEntity 的實體
public static MyEntity GetMyEntity()
{
ConnectionStringSettings connStrs = ConfigurationManager.ConnectionStrings["MyDB_Entity"];
string conn = connStrs.ConnectionString;
return new MyEntity(conn);
}
執行上述程式碼後跳出例外
對應和中繼資料資訊中找不到指定的預設 EntityContainer 名稱 'MyEntity'。
參數名稱: defaultContainerName
對照英文的例外訊息是
System.ArgumentException: The specified default EntityContainer name 'MyEntity' could not be found in the mapping and metadata information.
Parameter name: defaultContainerName
這很有機會是手殘把連線字串改錯的緣故,
經過仔細的比對之後果然如此 有幾個地方請特別注意檢查它們
1. metadata
2. provider
3. provider connection string
以我自己發生的狀況是在 metadata 中的 Data.MyEntity 寫錯導致對應失敗
說不定變更 Class 名稱或者改了 Namespace 也有可能
參考網址 NET.SITE.OUT