2010-11-18 73 views
0

我正在尋找使用預生成的EF視圖每http://msdn.microsoft.com/en-us/library/bb896240.aspx加快加載時間。這在我的本地環境中正常工作,並且我有連接字符串,其中包含「metadata =〜/ bin/Models \ DSManagedCoModel.csdl |〜/ bin/Models \ DSManagedCoModel.ssdl |〜/ bin/Models \ DSManagedCoModel」一行。 MSL」。當我使用本地主機進行調試時,它工作得很好。然後當我嘗試使用127.0.0.1它給我一個錯誤「指定的元數據路徑無效」。我通過添加一個將文件複製到Azure雲項目bin目錄(實際上是它的Models子文件夾)的構建事件來修復了127.0.0.1的問題。但是,當我嘗試發佈到Azure時,我收到了類似的消息「指定的元數據路徑無效」。 是否可以在Azure中使用預生成的EF視圖?怎麼樣?Azure中的預生成實體框架視圖?

回答

1

我建議將CSDL等嵌入爲資源,而不是將它們保存爲文件。將CSDL等文件添加到項目中,並將構建操作指定爲「Embedded Resoruce」。那麼你可以這樣做:

metadata="res://MyAssembly.dll/MyAssembly.bin.Models.DSManagedCoModel.csdl| //etc. 

Use Reflector to discover the true resource name. I wrote an article on connect strings which should help

請注意,這些文件實際上並不是預生成的視圖;他們只是模型。但你需要他們用EDMGen來產生觀點。

+0

克雷格,這是一種榮譽,有你答覆。你的博客和關於SO的答案是一個巨大的資源......這讓我更接近了......第一次它說了一些關於找不到資源的東西。然後,當我嘗試res:// */trick時,它發現它但卻說「EntityContainer名稱必須是唯一的」。它在edmx文件(我有幾個)中是唯一的,但我注意到我的edmx包含一個標有<! - CSDL內容 - >的節,它重複了上面的信息。看起來像是一個線索...... – Vince 2010-11-18 18:07:49

+0

如果您使用單獨的CSDL/MSL/SSDL文件,那麼EDMX將不再被使用(除了上面的源代碼外),並且不應在運行時引用。 – 2010-11-18 18:16:11

+0

更仔細地看,CSDL(和其他文件)的內容清楚地嵌入EDMX中。事實上,它們看起來是相同的。我假設一個或另一個應該被刪除?僅供參考,我有EntityDeploy作爲我的EDMX生成操作和嵌入式資源(不要複製)csdl及相關文件。 – Vince 2010-11-18 18:20:11