第一部分
我正在开发一个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 :(得分:0)
使用View模型有什么好处?
发布回服务器时,可以使用数据注释和模型绑定。这样可以更轻松地创建带有验证检查的表单。
正在跟踪数据库中出来的对象进行更改并随身携带一些行李。视图模型(作为POCO)仅包含您需要的数据,而不包含与其相关的所有其他跟踪。传递视图模型被认为是比传递实体更好的做法。
答案 1 :(得分:0)
肯定你必须处理你的DataContexts实例(这基本上就是使用它)。我的建议是在Global.asax中添加它:
public void Request_End(object sender, EventArgs e)
{
WebDataContext.Get().Dispose();
}
并使WebDatacontext.Get()从HttpContext.Current.Items返回。
通过这种方式,您的datacontext将可用于整个请求,并且当您不再需要它时将被处理。
希望它有所帮助。