2011-12-22 77 views
0

第一部分 我正在使用Web應用程序,而不是使用viewmodel類來組織數據並在View中使用,使用數據庫表模型。例如在我看來,模型聲明如下所示:@model aa.webobjects.object - 對象是由dbml自動生成的。這裏的問題是使用視圖模型而不是組織數據的好處?我有另一個類,在DBML,即例如這樣處理:使用視圖模型可以組織代碼,但會影響性能嗎?

public Product GetProductsByPrice 
{ 
    get 
    { 
     return WebDataContext.Get().Products.Where(x => x.Price > 10); 
    } 
} 

,基本上這是用來組織數據,並根據需要從數據庫中提取數據。迴歸聲明讓我們回到問題二。

第二部分 我的應用程序有內存泄漏。內存不斷增長和增長,並在一段時間後服務器死亡。在我閱讀一些文章時,似乎應該將我的WebDataContext包裝在using聲明中,以便它能夠正確回收。我的問題是:不使用Viemodel導致內存泄漏,如果我使用viewmodels來組織數據,並重新組織WebDataContext的使用,以便它包裝在using聲明將幫助?

我不確定這是否正確解釋問題。任何幫助將不勝感激。

+0

什麼是WebDataContext?它是從DbContext,ObjectContext還是其他一些ORM擴展的? – danludwig 2011-12-22 17:30:03

+0

我認爲它從System.Data.Linq.DataContext擴展 – 2011-12-22 18:15:26

回答

0

當然,你必須處理你的DataContexts實例(這基本上是使用的)。我的建議是在Global.asax中添加此:

public void Request_End(object sender, EventArgs e) 
{ 
    WebDataContext.Get().Dispose(); 
} 

,並WebDatacontext.Get()從HttpContext.Current.Items返回。

通過這種方式,您的datacontext將可用於整個請求,並且將在您不再需要它時處理它。

希望它有幫助。

0

使用View模型有什麼好處?

  1. 當您回發到服務器時,可以使用數據註釋和模型綁定。這允許創建帶有驗證檢查的表單更容易。

  2. 來自您的數據庫的物體正在跟蹤更改並隨身攜帶一些行李。視圖模型(作爲POCO)僅包含所需的數據,而不包含與其相關的所有其他跟蹤。傳遞視圖模型被認爲比傳遞實體更好。

相關問題