【发布时间】:2016-12-24 17:57:06
【问题描述】:
我刚开始使用 Entity Framework 4.0 和 ASP.NET MVC 2,对存储过程和分页的使用有一些疑问。
您可以将插入、更新和删除操作映射到存储过程,我已经这样做了。但是,为了使我的分页工作,我需要映射 Select 操作。
现在是我可以做到这一点的唯一/最好的方法,方法是转到我的模型浏览器,右键单击存储过程和“添加函数导入”并添加它。
这导致以下代码....
var contactFormSubmissions = _entities.ContactFormSubmission_GetContactFormSubmissions(1, 10);
我的问题是,它将它添加到根级别的全局实体容器中,而不是像插入/更新和删除操作那样的 ContactFormSubmission 实体。
我宁愿这样,但通过存储过程...
_entities.ContactFormSubmissions.Select<ContactFormSubmission>(string.Empty, pageParam, pageSizeParam);
通过这种方式调用 select 的方式与其他操作相同,我最终不会在实体容器的根目录中使用许多可能无法管理的函数。
这是一个较小的问题,因为至少目前一切正常。
我的下一个问题是如何使用这个函数最好地实现分页。
我看到的所有关于如何使用 MVC 和实体框架完成分页的示例都使用了 LINQ 和 IQueryable。有没有一种方法可以将 IQueryable 与延迟加载和 LINQ 函数 Skip / Take 与基于表的函数 /sproc 一起使用?
http://blog.wekeroad.com/2007/12/10/aspnet-mvc-pagedlistt/
PS - 任何使用 SP 的实体框架在 MVC 中进行分页的示例都很棒!
【问题讨论】:
标签: stored-procedures asp.net-mvc-2 paging entity-framework-4