the*_*ist 4 c# asp.net-mvc entity-framework asp.net-mvc-2
我正在使用Entity Framework在MVC2中编写应用程序
据我所知,ViewModel必须只包含数据,而对数据库没有任何逻辑。假设我有Product类,是具有ADO.NET实体EntityCollection<ProductToStatus>时,ProductToStatus是许多一对多表。我有ProductModel(Product它的.ctor)被传递给View。
public class ProductModel
{
....
public Product Item {get; private set;}
...
public ProductModel(Product item)
{
...
this.Item = item;
...
}
}
Run Code Online (Sandbox Code Playgroud)
在View我需要使产品的所有状态,所以要做到这一点,我需要通过查询数据库item.ProductToStatus.Select(s=>s.ProductStatus).ToList();中ProductModel,但这一请求发送到数据库,因此它违反了MVC的原则?
这样可以吗,还是我需要做点什么?
你不应该这样做。您的控制器应收集视图所需的数据,并将其打包并将其传递给视图以进行渲染。
因此,您ProductModel应该Product在构造函数中或通过属性(我的喜好)获取所需信息的详细信息,或者一推即用Product它在构造函数中进行的所有查询来设置其所有内部字段,但不保持Product周围的参考。我不喜欢Product在构造函数中使用,因为它在构造函数中的工作并不好,但是取决于它在做什么,这可能还可以。
使您ProductModel拥有大量的属性可能更好,然后可以像这样创建它:
var model = new ProductModel()
{
Statuses=product.ProductToStatus.Select(s=>s.ProductStatus).ToList(),
Name=product.Name,
OtherProperty=GetPropertyValue(product),
//etc
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1041 次 |
| 最近记录: |