我正在将旧应用程序从 WebForms 移植到 MVC,该过程的一部分是拆除现有数据层,将逻辑从存储过程转移到代码。因为我最初只使用基本的 C# SQL 函数 (System.Data.SqlClient),所以我使用了一个轻量级的伪 ORM (PetaPoco),它只将 SQL 语句作为字符串并执行它。构建动态查询在 SQL 中的工作方式大致相同 - 许多条件添加和删除附加代码(平均查询有大约 30 个过滤器)。

所以环顾四周后,我找到了一些选择:

  • 一堆字符串和条件,根据需要添加查询的位。真的很讨厌,特别是当查询变得复杂时,如果存在更好的解决方案,我不想追求。
  • A bunch of conditionals using L2E 。看起来更优雅,但我测试的 L2E 太臃肿了,总体来说是一种糟糕的体验。我可以在 L2S 中做同样的事情吗?如果是这样,L2S 会在 future 5-10 年持续存在吗?
  • 使用 PredicateBuilder 。仍在研究这一点,关于 L2S 的相同问题。
  • 编辑:我也可以坚持使用现有的存储过程模型,但无论如何我必须重写它们,因此查看其他选项不会有什么坏处,因为我仍然需要做一些工作。

  • 还有其他选择吗?任何人都可以对上述任何一种方法有一些经验 - 主要是,您选择的方法是否让您想要构建一台时间机器并杀死您以实现它?

    最佳答案

    我会看看LLBLGen。它生成的代码非常好且可定制。他们还提供了一个强大的 linq 提供程序,可以帮助您进行查询。我将它用于几个大型项目并且非常高兴。

    http://www.llblgen.com/

    关于c# - 动态查询的最佳选择?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6194880/

    10-11 07:12
    查看更多