2012-03-26 74 views
0

我正在爲Microsoft MVC應用程序做模型第一種方法。該解決方案被命名爲「TutorialPile」,分爲兩個項目,Domain和WebUI。我嘗試將Tutorial對象的控制器添加到WebUI項目中,然後選擇域類和數據庫上下文。但是,我收到錯誤「無法檢索TutorialPile.Tutorial的元數據,無法加載指定的元數據資源」。MVC實體框架連接字符串引用其他項目

環顧四周,它看起來好像無法在web.config文件的連接字符串中找到edmx對象。我從Domain項目的app.config文件複製了連接字符串,但它仍然不起作用。以下是web.config文件中的連接字符串。

<add name="ApplicationServices"   connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" /> 
<add name="TutorialPileModelContainer" connectionString="metadata=res://*/Models.TutorialPileModel.csdl|res://*/Models.TutorialPileModel.ssdl|res://*/Models.TutorialPileModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;initial catalog=TutorialPileDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
<add name="TutorialPileDbContext"  connectionString="metadata=res://*/Models.TutorialPileModel.csdl|res://*/Models.TutorialPileModel.ssdl|res://*/Models.TutorialPileModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;initial catalog=TutorialPileDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

這裏是我複製的連接字符串。

<add name="TutorialPileDBEntities"  connectionString="metadata=res://*/TutorialPile.csdl|res://*/TutorialPile.ssdl|res://*/TutorialPile.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\sqlexpress;initial catalog=TutorialPileDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

關於我需要改變的任何想法?

回答

0

確保...

  1. 在EDMX文件的生成操作設置爲EntityDeploy(選擇文件並轉到屬性窗口)。
  2. 您的WebUI項目引用了域項目
  3. 編輯WebUI項目上的連接字符串以引用其他項目的元數據。使用*表示它可以來自任何dll。但是,如果您的edmx文件位於文件夾內,則必須映射層次結構。

如:
路徑EDMX: TutorialPile.Domain /型號/ TutorialPile.edmx
連接字符串: RES://*/Model.TutorialPile.csdl | RES:// */Model.TutorialPile.ssdl |資源://*/Model.TutorialPile.msl

更妙的是:

documentation建議您使用的程序集的全名指定組件(由於性能原因)(類似:AdventureWor ks,1.0.0.0,neutral,a14f3033def15840)。我無法讓它工作。但是,只使用裝配的名稱適合我。因此,如果您的域項目輸出一個TutotialPile.Domain.dll,您可以使用:

res://TutorialPile.Domain/Model.TutorialPile.csdl | res://TutorialPile.Domain/Model.TutorialPile.ssdl | res://TutorialPile.Domain/Model.TutorialPile.msl