【发布时间】:2012-01-26 21:58:33
【问题描述】:
我有一个局部视图,它遍历其模型(事物列表)以显示事物。名称和三个整数值,它们是相关实体的计数。
首先,我试着把:(伪剃须刀)
foreach(thing in Model){
@thing.Name :
@thing.related.entities.where(condition1).Count()
@thing.related.entities.where(condition2).Count()
@thing.related.entities.where(condition3).Count()
}
但它真的很慢......所以我在 ThingRepository 中创建了一个函数,它可以更快地执行相同的查询,就像这样(伪代码)
function GetCountofRelatedEntities(relatedID,condition){
return db.entities.where(relatedID==relatedID && condition).count()
}
而且它的速度要快得多,所以我想调用它。我想我应该从控制器调用它,但是我需要一个 ViewModel 来保持一个 (thing, int, int, int) 集合作为模型,或者我可以非常使用 ViewBag 将结果传递给视图,但是,这是问题: 为什么不简单地从视图中使用存储库?视图中的这段代码有什么问题? (伪剃须刀)
@repo=new ThingRepository()
foreach(thing in Model){
@thing.Name :
@repo.GetCountofRelatedEntities(thing.relatedID,condition1)
@repo.GetCountofRelatedEntities(thing.relatedID,condition1)
@repo.GetCountofRelatedEntities(thing.relatedID,condition1)
}
你能告诉我为什么我不应该在视图中实例化存储库吗?或者我能做到吗?
【问题讨论】:
标签: c# asp.net-mvc entity-framework razor repository