2013-08-04 37 views
0

我一直在努力解決這個問題一段時間,並且我無法在Web中找到任何解決方案。我有一個包含三個項目(Presentation [Balance],Data [Data],BussinessLogic [Logica])的解決方案(.NET 4 C#VS 2010)。這個想法是使用三層架構。嘗試從另一個項目使用實體數據模型時出現異常

enter image description here

我的數據庫爲SQL精簡版3.5命名Balance.sdf。然後,在我的Data項目中,我創建了一個ADO .NET實體數據模型,以便使用Entity Framework執行與數據庫的映射。

的映射是正確地完成和連接字符串在數據App.Config中添加微粒子:

<connectionStrings> 
<add name="BalanceEntities" connectionString="metadata=res://*/DatabaseModel.csdl|res://*/DatabaseModel.ssdl|res://*/DatabaseModel.msl;provider=System.Data.SqlServerCe.3.5;provider connection string=&quot;Data Source=|DataDirectory|\Balance.sdf;Password=password;Persist Security Info=True&quot;" providerName="System.Data.EntityClient" /> 
</connectionStrings> 

然後,餘額(演示[WPF])引用的數據使用的實體,和邏調用方法。

的問題是,當我調用任何從邏類的靜態方法,包括使用DatabaseModel.edmx的實例,我得到這個異常:

ArgumentException的是未處理:指定命名的連接或者是沒有在配置中找到,不打算與EntityClient提供者一起使用,或者無效。

這發生在構造函數中:

enter image description here

我試了一下,是添加了ADO .NET實體數據模型在資產負債項目,它完美地工作。所以我想它一定是與App.Config相關的東西。任何人都知道爲什麼會發生這種情況?

感謝您的閱讀!

+0

沒了下文的工作? – christiandev

回答

1

添加相同連接字符串餘額項目,所以這也應該是在App.Config中

<connectionStrings> 
<add name="BalanceEntities" connectionString="metadata=res://*/DatabaseModel.csdl|res://*/DatabaseModel.ssdl|res://*/DatabaseModel.msl;provider=System.Data.SqlServerCe.3.5;provider connection string=&quot;Data Source=|DataDirectory|\Balance.sdf;Password=password;Persist Security Info=True&quot;" providerName="System.Data.EntityClient" /> 
</connectionStrings> 
+0

是的,它的工作。但爲什麼我必須將它包含在每個App.Config中?沒有其他辦法可以做到嗎?由於不重複代碼? – Andres

+0

您需要在包含實體框架文件的項目配置中使用,因此您可以使用te designer等,並且您需要它在主項目中。這在任何其他項目中都不需要。 – christiandev

相關問題