如何将linq中的数据库命中减少到sql

时间:2011-12-08 09:05:50

标签: c# asp.net-mvc linq-to-sql

我有一个场景,我想知道减少数据库命中的最佳实践。场景是我在我的应用程序中有一个字典表,我把所有的单词/关键字用于翻译目的,因为我的系统是多语言的。 关键字被放置在整个页面上,在一个页面中可以是10到20个,如果用户没有查看英文版的网站,它就会从数据库中获取翻译。

我在使用C#和LINQ2SQL的Asp.Net MVC 2中的应用程序。

4 个答案:

答案 0 :(得分:9)

缓存是减少数据库查询的好方法。您可以使用两种级别的缓存:

  • 缓存对象(例如数据库查询的结果)
  • 缓存整个控制器操作或部分的HTML输出

答案 1 :(得分:8)

翻译通常不会经常更改,并且数据量有限。在启动Web应用程序时读取所有翻译的字符串,并将它们放在全局可访问的词典中。无论何时需要翻译的字符串,请在字典中查找。

答案 2 :(得分:2)

linq将延迟加载,这意味着除非您访问查询返回的属性,否则查询不会访问数据库,因此请确保在真正需要之前避免访问属性。

您还可以尝试将linq查询合并为一个,并查看您的循环,以确保没有更好的方法来循环查询。

您还应该能够完全删除数据库访问,并在xml而不是数据库中使用翻译文件。

答案 3 :(得分:2)

在你可以做诸如缓存和延迟加载之类的事情之前......最好弄清楚出了什么问题。

输入LinqToSql Profiler。是的,它是一种商业产品..但它是值得的。此外,它有一个DEMO期间..

这可以显示执行查询的垃圾......以及哪些查询正在执行N + 1等等。

enter image description here