【问题标题】:What are some linq "best practices" [closed]什么是 linq“最佳实践”[关闭]
【发布时间】:2013-10-16 22:49:20
【问题描述】:

希望在我的下一个项目中使用 linq 来减轻一些繁重的工作。之前,我潜入了 linq 世界,我想要一些关于使用 linq 的最佳实践的建议。我还没有决定 EF 和 linq to sql

【问题讨论】:

  • 我认为您可能需要先做出决定。我不确定两者是否有任何共同的最佳做法。
  • 另请注意,LINQ to SQL 仅适用于 SQL Server / SQL Server Compact 数据库。
  • @Mr Roys:不完全正确。 Devart 为 Linq-to-Oracle 提供了一个解决方案。 devart.com/dotconnect/linq.html

标签: c# linq


【解决方案1】:

首先,您需要定义“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 之间的区别。这与前一点有关,但在编写 Linq 查询时,了解 IQueryable 的工作原理可以让您的生活变得更轻松。

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

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

【讨论】:

  • 一个非常好的和紧凑的解释,每点的一些参考将不胜感激。
【解决方案2】:

在这里查看 101 个 LINQ 示例 http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx

【讨论】:

    【解决方案3】:

    Favor casting, instead of parsing 用于数据类型。

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-07
        • 2011-11-21
        • 1970-01-01
        • 1970-01-01
        • 2010-09-08
        • 2013-09-30
        • 2019-10-21
        相关资源
        最近更新 更多