如何:使用L2S在ASP.NET MVC中为每个请求进行一次数据库调用

时间:2011-04-15 06:12:27

标签: asp.net-mvc nhibernate linq-to-sql entity-framework asp.net-mvc-3

如何在一次调用DB中获取处理请求所需的所有数据。另外我想知道如果我的母版页还需要数据库中的一些数据,我将如何做到这一点?我知道它在Passing data to Master Page in ASP.NET MVC中澄清了。但我认为这会对数据库进行多次调用。如果不是这样的话,请告诉我。

更新
+1并感谢所有回答者/评论者的意见和建议。

3 个答案:

答案 0 :(得分:3)

我认为您可能会混淆one session per requestSELECT N + 1方案。对数据库进行多次调用是完全正常的,但是您需要注意何时必须对列表中的每个项目执行一次数据库调用。这在使用延迟加载列表时最常遇到。解决方案是使用急切提取。

PS。我认为将数据传输到母版页的流行解决方案是在母版页中使用Html.RenderAction。这样您就不必担心整个地方的主页问题(如导航)。

答案 1 :(得分:3)

我必须同意其他答案,你对此有什么理由?

NHibernate可以使用FUTURES批处理SQL语句,你读过这个blog post吗?

但是说我不确定如何将所有观点结合到您的网站上。如果你确实提出了解决方案,我很乐意看到它。

这并不容易,并且无法显示一个小代码示例。

答案 2 :(得分:2)

将每个请求限制为仅限一个数据库,这是一个很高的命令。你这样做的原因是什么?这只是你自己设定的有趣挑战吗?如果出于优化原因,有更好的方法可以实现此目的:优化查询,缓存等。