Entity Framework model or viewmodel for listing data?
想象一下,我有一个20个字段的模型,现在我有1000个记录,但是我的数据库每天都在增长,然后我想把它们列在一个Razor页面中,并显示所有的记录,只需要5个字段。
我只想知道,如果我将包含所有字段的模型返回到我的视图中,并选择我在视图中需要的字段,是否可以,或者应该用我只需要的字段创建一个视图模型?我担心演出。
一定要创建一个ViewModel来只公开您需要的字段。不要公开出于性能和可能的安全原因而不需要的任何字段。
当然,您可以在服务器端或客户机端过滤数据。但最好的方法是在服务器端过滤数据,以尽可能减少服务器负载和网络流量。它还可以提高应用程序的响应速度和性能。使用IQueryable接口进行服务器端筛选(有关详细信息,请查看此处)。
使用服务器端过滤的一个副作用是具有更好的安全性。
使用ViewModel,您可以只通过传递页面上所需的字段来封装属性。在处理大量字段时,使用ViewModel可能会提高性能。通过使用viewmodal,可以保持应用程序的整洁和所有逻辑的分离。:)
对于这样的小数字,这真的不重要。从性能上看,你看不出有什么不同。我也不会担心安全问题。
我担心的是你的代码的组织。是否将视图与数据库模型耦合?如果你同意的话,那就去吧!
编辑:我仍然认为是否返回模型的决定不应该基于潜在的性能影响,而应该基于您的代码组织。
当你谈论显示一组更大的记录时,你需要一种方法来显示它们(例如,一些带有分页功能的网格…),我建议你考虑一直保持一个可查询的状态。有些产品可以接受iQuery并提供对数据的分页、排序和搜索。
网格,MVC特雷里克