0

我对 MVC 相当陌生,但我了解原理。

我担心虔诚地坚持这一原则会导致性能问题。

例如,为了只发送视图需要显示的数据,我需要:

  • 从数据库中检索数据
  • 在模型构建器中逐行遍历数据集,格式化字段并将它们放置在视图模型中
  • 将此发送到视图,然后需要逐行遍历数据集以显示它。

在大多数情况下,数据中的行数并不多,但我关心的是循环遍历数据集两次的要求。循环操作天生就很慢吗?重复两次似乎很疯狂?

我宁愿通过在视图中放置格式而不是重复循环来妥协。

这是最佳实践吗?在现代系统中,这种循环重复是否微不足道,可以忽略不计?

4

2 回答 2

2

在现代系统中,这种循环重复是如此微不足道,以至于可以忽略不计

很可能是这种情况。

没有循环迭代以 O(n) 运行。它们本质上并不慢(假设你没有很多,我的意思是很多记录)。我会用双循环编写代码并测试它有多慢。这很可能是一个微优化,你的代码在其他地方效率更低。

于 2013-01-14T14:11:18.157 回答
0

对于第一点,您可以发出一个 LINQ 查询来获取您的数据。这是最简单的一个。

对于第二点,您可以使用AutoMapper。它会自动将您返回的行从数据库映射到您的ViewModel类的实例。它可以映射集合/枚举,如Lists 和 Arrays

对于第三点,您可以将List<ViewModel>AutoMapper 返回的值传递给类似网格的WebGrid。它将负责在视图上显示数据,同时允许您对数据进行分页(仅返回该页面所需的数量,而不是从数据库中获取所有行),对数据进行排序等等。

如果您使用此工作流程,您将不必在不同位置循环访问您的数据。当使用 AutoMapper 和 WebGrid 处理传递给它的行时,循环操作仍然存在。他们只是对你隐藏。这会让你跌得更好。:) 循环是这种工作流程所固有的,但如果您只返回必要的数据(分页数据),它不会对用户体验造成不利影响。

于 2013-01-14T14:13:19.927 回答