C# 设计建议..具有实体框架的DB视图与常规存储过程

C# 设计建议..具有实体框架的DB视图与常规存储过程,c#,sql-server,entity-framework,asp.net-mvc-5,C#,Sql Server,Entity Framework,Asp.net Mvc 5,我正在开发一个应用程序.NETMVC5。。它从数据库SQL Server提取用户信息。用户可以根据名字、姓氏或任何其他参数搜索员工。5此类参数 我正在寻找一个设计建议,是否最好开发一个包含所有员工信息的数据库视图,并使用实体框架连接到数据库并在前端过滤数据,比如说可以在MVC中使用DBContext和filer on view访问员工视图 或 开发一个存储过程,从前端获取这些参数并返回我使用的结果集 我的疑问是,当我使用实体框架访问数据库视图并过滤数据时,它是否会对性能产生影响,因为视图有数百万

我正在开发一个应用程序.NETMVC5。。它从数据库SQL Server提取用户信息。用户可以根据名字、姓氏或任何其他参数搜索员工。5此类参数

我正在寻找一个设计建议,是否最好开发一个包含所有员工信息的数据库视图,并使用实体框架连接到数据库并在前端过滤数据,比如说可以在MVC中使用DBContext和filer on view访问员工视图

开发一个存储过程,从前端获取这些参数并返回我使用的结果集

我的疑问是,当我使用实体框架访问数据库视图并过滤数据时,它是否会对性能产生影响,因为视图有数百万条记录

将过滤后的查询传递到数据库还是访问具有百万条记录的初始对象是一个性能上的问题

非常简单:始终是存储过程。从不使用数据库视图


数据库视图未设置关键帧,也未编制索引,这意味着他们的查询速度非常慢。

谢谢Chris的建议。.你也可以解决这个问题。.使用实体框架和筛选视图或存储过程来处理前端的每一次点击。.view的优点是它拥有所有信息,我可以在前端筛选数据,我总是需要将其作为存储过程发送数据库的参数。同样,这正是您不希望使用视图的原因。如果您使用一个视图,它应该准确地返回您需要的数据。如果您需要对其进行过滤,则视图完全不在窗口中。要么直接使用数据库表,要么使用存储过程。谢谢..我明白了..点击一个没有实体框架的存储过程,并使用数据读取器读取到一个模式中还可以吗..好吧,可以,但这并不是最好的方法。你最好只是在你的上下文中添加方法来执行你的存储过程并返回强类型对象的枚举。实体框架在内部做同样的事情是正确的。我的意思是,我没有做任何其他事情,只是点击一个存储过程。这就是应用程序的全部内容。。