LINQ to SQL中的新数据与本地缓存数据

时间:2011-12-07 17:51:55

标签: c# linq-to-sql

好的,我在WCF服务上设置了LINQ to SQL系统。我的应用程序包含对此服务的引用,它用于从SQL数据库收集数据。我使用由SQLMetal.exe生成的DataContext对象。

我的DataContext对象中有两个实体集合,即客户端和组。每个客户端都包含一个字段,该字段显示它所属的组数(以逗号分隔的组ID列表)。

在应用程序中,我有一个客户端表。如果我选择一个并单击按钮,则第二个表显示客户所属的组的详细信息。

这是一个问题:当我单击此按钮时,我每次都会转到数据库中的组,还是应该在应用程序启动时加载组并筛选这些组?后者会更快,但我想要一个并发的解决方案。

第二个问题(我知道真的不应该有两个,但我刚才意识到我可能会对此问题感到困惑):当我在DataContext对象的集合上运行LINQ查询时,我是否获得了最新的数据库数据?

感谢。

3 个答案:

答案 0 :(得分:1)

对于第二个问题 - 是的,针对LINQ to SQL的每个查询都会产生一个发布到后备数据库的SQL语句。并且为了进一步澄清,每次都尝试枚举LINQ语句。我并不是要暗示每个LINQ语句都会立即发送到数据库,当然这不是。

每次缓存与查询的第一部分取决于其他因素。有必要吗?意思是,是否有一个性能损失,你试图纠正?此外,在数据成为您的用户关注之前,数据能够“陈旧”吗?这些问题需要您回复给应用程序所有者来决定。

答案 1 :(得分:1)

与大多数现实世界的表演问题一样......这取决于。最好的方法是用“感觉正确”的方式编写应用程序,然后再考虑性能,测量和更改。

是的,您将获得最新的数据库信息。

答案 2 :(得分:1)

除非加载组需要花费大量时间,否则请不要缓存。 过早优化永远不是一个好主意。 请记住,您可能希望并确保您的群组很好地分离,如果您必须相对简单,则进行优化。