我有一个页面将来自两个不同表格的聚集数据组合在一起。我希望并行执行这些查询,以减少延迟,而不必引入可执行这两个操作的存储过程。在没有存储过程的情况下在EF4中执行同时无关的查询?
例如,我现在有这样的:
ViewBag.TotalUsers = DB.Users.Count();
ViewBag.TotalPosts = DB.Posts.Count();
// Page displays both values but has two trips to the DB server
我想一个类似于:
var info = DB.Select(db => new {
TotalUsers = db.Users.Count(),
TotalPosts = db.Posts.Count());
// Page displays both values using one trip to DB server.
会产生这样的
SELECT (SELECT COUNT(*) FROM Users) AS TotalUsers,
(SELECT COUNT(*) FROM Posts) AS TotalPosts
因此查询,我正在寻找一个查询来击中数据库服务器。我不问如何使用并行任务或线程
很显然,我可以创建行程单回来的两个值的存储过程两个单独的查询,但我想避免,如果可能的,因为它更容易纯粹在代码中添加额外的统计信息,而不是不断刷新数据库导入。
我错过了什么吗? EF中有一个很好的模式可以说你想要几个不同的值可以并行取出吗?
我猜测帖子与用户无关? –
对。我只是编制了这两个表名。我的实际是其他东西是不相关的 –
我意识到这并没有真正帮助你,但我认为值得注意的是,NHibernate有一个名为'期货'的概念,它有相同的事情(即多个查询在一个请求中)。 – StanK