2010-08-17 78 views
0

我已經創建了一個業務層,其中包含要在ASP.NET應用程序中使用的數據庫模型。我之前在Windows窗體中使用過Linq To SQL Classes,但在每個請求Web應用程序中使用ORM對我來說是陌生的。我有幾件事我無法弄清楚,我會很感激,如果有人給我任何見解..ASP.NET應用程序的實體框架注意事項

我的BLL有像GetRecord()或UpdateRecord()靜態方法。這些方法中的每一個創建一個新的ObjectContext實例,在工作單元之後被銷燬。我沒有任何HttpContext.Current.Items緩存實現。

我正在使用EF .NET 3.5。

  1. 我創建了一個預生成視圖(Model.View.cs)並將其添加到我的解決方案中。這是我必須要做的嗎?我也需要用我的dll發佈csdl,msl和ssdl文件嗎?

  2. 預編譯查詢對ASP.NET應用程序不好嗎?對於任何ASPX頁面,我只有一個或兩個查詢,在同一頁面中很少使用兩次select查詢。預編譯我的查詢會減慢應用程序嗎?我想知道會話A所做的預編譯對會話B是否有用?

  3. 我創建了下面的方法來更新ASP.NET頁面的記錄,我不知道,如果它是一個很好的辦法做到這一點:使用BLL

    ASP.NET獲取記錄(實體)。 GetRecord()
    更新
    如果記錄存在
    用途context.ApplyPropertyChanges()來更新記錄

  4. 我」將更新記錄BLL.Update()
    BLL.Update()檢查的任何值已經紅了幾個實體框架K性能圖表和每個圖表中有兩種不同的查詢統計數據:第一次運行和第二次運行。由於我使用單位工作類型的設計,我的查詢將不會看到第二次運行嗎?

謝謝。

回答

1
  1. 您需要將CSDL等作爲文件或資源。觀看前一代有助於演出,但並不能使您以某種形式包含EDMX。
  2. 編號
  3. 好吧,只要它走了。很難說沒有看到代碼更多。
  4. 這取決於。 This post should help
+0

非常感謝Craig。如果您願意,我想清除一些內容:1.我的項目中有一個edmx,其構建操作爲EntityDeploy。發佈時,我還需要在我的dll旁邊安裝csdl等嗎? 2.所以預編譯查詢對ASP.NET應用程序並不壞我說的對嗎?預編譯在不同的併發用戶的會話之間不起作用?沒有全局緩存或類似的東西? – dstr 2010-08-17 15:06:18

+1

1.您需要(a)將這些文件部署到您的程序集中,或者(b)將其構建操作更改爲嵌入式資源並[將EF連接字符串更改爲匹配](http://blogs.teamb.com/craigstuntz/ 2010/08/13/38628 /)2.預編譯對當前用戶有幫助並有所幫助。範圍由您決定 - 您在存儲對已編譯查詢的引用時選擇範圍。 – 2010-08-17 16:47:52

相關問題