LINQ to SQL中的新数据与本地缓存数据
本文关键字:数据 缓存 SQL to 新数据 LINQ | 更新日期: 2023-09-27 18:17:00
好了,我在WCF服务上设置了一个LINQ to SQL系统。我的应用程序包含对该服务的引用,它使用该服务从SQL数据库收集数据。我使用由SQLMetal.exe生成的DataContext对象。
我有两个实体集合在我的DataContext对象,客户和组。每个客户端包含一个字段,表示它属于多少个组(一个逗号分隔的组id列表)。
在应用程序中,我有一个客户端表。如果我选择一个并单击一个按钮,第二个表将显示Client所属的组的详细信息。
这里有一个问题:当我点击这个按钮时,我是每次都去数据库查找组,还是应该在应用程序启动时加载组并筛选这些组?后者会更快,但我想要一个并发的解决方案。
第二个问题(我知道不应该有两个真的,但我刚刚意识到我可能会对这个问题感到困惑):当我在我的DataContext对象上运行LINQ查询时,我得到了最新的数据库数据吗?
谢谢。
对于您的第二个问题—是的,每个针对LINQ to SQL的查询都会导致向后台数据库发出SQL语句。为了进一步澄清,这是每次尝试枚举一个LINQ语句。我并不是说每条LINQ语句都被立即发送到数据库,当然不是这样的。
关于每次缓存与查询的第一部分取决于其他因素。有必要吗?也就是说,是否存在你想要纠正的性能问题?此外,在数据成为用户关心的问题之前,它能"过时"到什么程度?这些都是你需要带回去给应用程序所有者决定的问题。
与大多数现实世界的性能问题一样…视情况而定。最好的方法是用"感觉正确"的方式编写应用程序,然后如果性能是一个问题,则测量并相应地更改。
是的,您将获得最新的数据库信息。
除非加载组需要花费大量时间,否则不要缓存。过早的优化从来不是个好主意。请记住,您可能希望并确保您的组集合很好地解耦,如果您必须进行优化,则相对简单。