什么是linq“最佳实践”

时间:2010-04-16 03:41:15

标签: c# linq

希望在我的下一个项目中使用linq来缓解一些艰苦的劳动。在此之前,我深入探讨了linq世界,我想就使用linq的最佳方案提出一些建议。我仍然未决定EF和linq to sql

4 个答案:

答案 0 :(得分:7)

首先,您需要定义“LINQ”的含义。我将问你关于Linq to SQL的其他问题。

如果您的意思是Linq to SQL,并且您正在开始一个新项目,我会说第一个最佳实践是不要这样做,并使用.NET中的实体框架。它远远优于EF 1.0以及Linq to SQL。自Visual Studio 2010和.NET 4发布以来,所有项目都应避免使用Linq to SQL。

  • 我能给你的最大的最佳实践是让数据库模型正确。正确地规范化您的数据库。正确调整和索引数据库。从正确创建的数据库构建EF模型,您会很高兴。如果你试图偷工减料,或者你以某种方式将数据库建模为某种非关系型对象存储,那么你的生活就会充满痛苦和痛苦。

  • 确保团队中的每个人都了解延迟执行的概念以及与实际生成和执行查询的方式有关。

  • 了解IQueryable<>之间的区别和IEnumerable<&gt ;.这与前一点有关,但在撰写Linq查询时,要了解IQueryable<>工作可以让你的生活更轻松。

  • 了解延迟加载以及它将如何影响查询的性能。在适当的时候使用它,并学习如何战略性地加载对象以获得最佳性能。

  • 了解每个查询的频率以及对加载的影响。一些最高频率的查询通常可以通过编译获益,但大多数情况下您不需要这样做。

答案 1 :(得分:0)

答案 2 :(得分:0)

Favor casting, instead of parsing表示数据类型。

我发现这非常重要,因为它可以极大地提高查询的可读性。

答案 3 :(得分:0)

为避免被懒惰评估所困扰,请考虑Jon Wagner在Best Practices for Linq Enumerables and Queryables上发布的这篇博文,我在这里引用:

  1. 使用“Fluent C#”而不是语言扩展名。
  2. “密封”LINQ链一旦构建(如果它们将被重用)。
  3. 如果您想允许合成,只返回“开放”链。
  4. 确保“开放”链返回的语义清晰
  5. 如果您要返回开放链,请确保内部代码没有副作用