2010-03-09 38 views
4

我想使用MVC 2和Entity Framework時找到首選的解決方案設置的一些信息,並且它似乎最直觀的給我在3層設置此Web應用程序了:MVC 2和實體框架 - 我應該把實體分類在單獨的圖層嗎?

  • MyProject.Web( MVC項目介紹)
  • MyProject.Data(使用實體框架數據網關層發言的DB)
  • MyProject.Tests(如設置一個新的MVC項目)

這個時候創建​​的測試項目似乎與這個例子相悖我發現,和文檔(例如,NerdDinner示例),它將MVC項目視爲直接與數據庫進行中介。 NerdDinner示例將數據訪問放入與MVC模型混合的存儲庫類中。

我試過用我認爲最好的方式,並在我單獨的Data項目中創建了我的「ADO.NET實體數據模型」項目,但是當我嘗試使用MVC列出其中的項目:

「無法加載指定的元數據資源。」

除非我有我的MVC項目中的實體數據模型的副本。我在尋找這個錯誤的道路上走得太慢之前,我想知道是否僅僅在我的存儲庫中使用數據訪問的情況下受到紀律處分時,我只是在反對純粹主義框架。

so: - 是否甚至有可能或建議將我的實體框架def放在這個其他項目中? - 我會以這種方式將其分離出來來犧牲某些其他MVC功能嗎? (例如驗證?) - 如果我正朝着正確的方向前進,並且其他人同意,那麼有沒有其他示例或文檔可以讓我指出?

回答

1

是的,我認爲把你的實體放在一個單獨的程序集中是個好主意。修復「無法加載指定的元數據資源」錯誤

一種方式是明確的連接字符串中指定程序集:

<connectionStrings> 
    <add name="MyEntities" connectionString="metadata=res://*/AssemblyName.bin.Namespace.MyEntities.csdl|res://*/AssemblyName.bin.Namespace.MyEntities.ssdl|res://*/AssemblyName.bin.Namespace.MyEntities.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=SERVER_NAME;Initial Catalog=DBName;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient"/> 
</connectionStrings> 

注意,尤其是在AssemblyName.bin.Namespace.MyEntities。這是集限定資源名稱(假設大會被稱爲「AssemblyName.dll」。你可能需要使用反射你第一次這樣做是爲了弄明白。

This answer也可能會有所幫助。

+0

精湛的 - 感謝:> 仍然得到錯誤,但。會再玩一些。乾杯。 – Wolo 2010-03-11 17:19:15