Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在asp.net mvc应用程序中检索大量行(超过10 mil)_Asp.net Mvc_Oracle_Datareader - Fatal编程技术网

Asp.net mvc 在asp.net mvc应用程序中检索大量行(超过10 mil)

Asp.net mvc 在asp.net mvc应用程序中检索大量行(超过10 mil),asp.net-mvc,oracle,datareader,Asp.net Mvc,Oracle,Datareader,我正在开发asp.net mvc应用程序,它提供了使用DATAREADER从ORACLE数据库中读取数据的功能,并将这些行呈现给用户(有时高达10 mil)。datareader读取操作在读取大约900000行后抛出内存不足异常 我和我的同事讨论了这个问题,他建议我应该使用无连接范式(可能是实体框架)或存储过程,并将数据分成块 我想知道是否有人可以权威性地说,哪种方式是完成上述问题的最佳方式。不要将所有行检索到内存中并执行分页 •并非所有用户都访问第2页 •因此,内存中的数据将不被使用 如果有更

我正在开发asp.net mvc应用程序,它提供了使用DATAREADER从ORACLE数据库中读取数据的功能,并将这些行呈现给用户(有时高达10 mil)。datareader读取操作在读取大约900000行后抛出内存不足异常

我和我的同事讨论了这个问题,他建议我应该使用无连接范式(可能是实体框架)或存储过程,并将数据分成块


我想知道是否有人可以权威性地说,哪种方式是完成上述问题的最佳方式。

不要将所有行检索到内存中并执行分页

•并非所有用户都访问第2页

•因此,内存中的数据将不被使用

如果有更多记录使用SQL端分页,可以使用Row_number()函数在SQL端执行分页

您还可以使用ORM框架访问数据,它们总是提供执行数据相关操作的最佳方法

我更喜欢使用Peta Poco,它有一种检索页面数据的方法

var result=db.Page<article>(1, 20, // <-- page number and items per page
"SELECT * FROM articles WHERE category=@0 ORDER BY date_posted DESC", "coolstuff");

var result=db.Page

您计划如何向用户展示数据?一次可以在页面上看到所有1000万条记录吗?对记录进行分页,以便一次只能看到几百条记录?AJAX在滚动时动态获取更多记录?一个词:不要-除非必须进行统计分析或其他什么,否则不要检索数百万行。你打算怎么处理这个问题?您的用户将如何与如此庞大的数据集进行交互?不可能找到好的解决办法。只获取尽可能多的数据,你可以使用/显示给用户,等等-获取1005001000行-不要更多。“mbeckish”/marc_s我已经在分页了,但在分页之前我正在检索所有数据(当然这种方法不适用于10 mil记录)-我喜欢mbeckish建议的方法,即使用AJAX在用户滚动时动态获取更多记录。我不太确定我将如何实现这一点-是否有一个链接,你可以建议?THanks@user430017研究术语“无限滚动”。asp.net mvc有很多选择。谢谢Eric King。我会做研究并回复你。谢谢@CreativeManix-我将尝试一下POCO。它读起来很有趣。我会再打给你的。对不起,我可能把事情简单化了,不明白你的意思。你有没有试过在甲骨文中正确地分页。我遇到了这个问题,我想知道我是否可以使用上面的方法来分页,而不是通过petaPeco。原因是1。我不太懂ORM2。这会更简单。你怎么认为?谢谢,我遇到了这个-