2011-12-22 83 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)仅包含所需的数据,而不包含与其相关的所有其他跟踪。传递视图模型被认为比传递实体更好。

相关问题