【问题标题】:Is there a dynamic Sql builder library for .Net? [closed].Net 是否有动态 Sql 构建器库? [关闭]
【发布时间】:2011-02-09 21:49:05
【问题描述】:

类似的东西。

http://code.google.com/p/squiggle-sql/wiki/Tutorial.

这在需要从 UI 的用户输入构建复杂 sql 的情况下是必需的。目前在我正在工作的项目中使用的是字符串操作,它看起来很难看,而且很难维护。

【问题讨论】:

标签: .net sql ado.net dynamic-sql


【解决方案1】:

试试DbExtensions,可用NuGet package

【讨论】:

  • DbExtensions 易于使用。然而,它有一些基本的设计问题。首先,它没有太大的欲望 INSERT IGNORE INTO 功能。其次,它非常僵硬。当一个人执行 INSERT_INTO 时,他不能执行 INSERT_INTO({0}({1},{2}), tableName, col1, col2),因为这会在参数周围添加单引号。相反,您必须在输入字符串中使用重载和基本上硬编码。另一个示例是执行 VALUES,您必须执行 VALUES(some_string) 或执行 VALUE({0} = {1}, col1, val1)。话虽如此,这不是一个糟糕的图书馆,但它还有很多不足之处。
  • @SomeNewbie 发布您的 cmets here,我会帮助您。
【解决方案2】:

我能够找到一个非常好的库,用于在 .Net 中创建动态 sql。

http://dynasql.codeplex.com/documentation

【讨论】:

    【解决方案3】:

    我不知道(尽管这并不意味着绝对没有)。

    实体框架呢?它允许构建查询并将其转换为针对实体的 SQL:

    customers.OrderBy(c => c.Name).Skip(10).Take(20) 
    

    生成:

    SELECT value c 
    FROM NW.Customers AS c 
    ORDER BY c.Name skip 10 limit 20; 
    

    【讨论】:

    • 我正在开发的应用程序位于 .Net 2.0 中。所以 EF 不适合我。
    • 你能使用一个成熟的 orm,比如 NHibernate 吗?它将使您能够通过它的 Criteria API 构建 I 查询。
    • 我们在应用程序中使用 nHibernate 1.2,但出于性能原因,此特定功能已绕过 nHibernate。
    【解决方案4】:

    Linq-to-Sql 有什么问题吗?

    var dc = new YourDataContext();
    var query = dc.TableName.Where(x=>x.MatchesYourPredicate);
    Console.WriteLine(dc.GetCommand(query).CommandText);
    

    【讨论】:

    • 我需要的项目是 .Net 2.0 项目。
    • 另外,过滤元素并不总是知道的
    • 对我来说,表名只在运行时知道
    【解决方案5】:

    我总是自己构建...它既快速又简单,而且您不必依赖 3rd 方库。此外,它还可以帮助您更加熟悉 SQL。

    【讨论】:

    • 如果您是程序员,那是正确的,但我可以看到该库用于驱动 GUI,允许非程序员/数据输入人员针对数据库构建通用查询。他们永远无法做到有效,但有时它很有用。
    • 你介意分享一下吗?
    • 真的那么简单吗?您如何处理子选择?有强类型吗?加入?别名?您可以在 where 子句中对项目进行分组,以便 OR 语句不会使 AND 语句无效吗?我可以继续。
    • 是的,这很容易 - 您可以完全控制正在发生的事情,这可以帮助您更好地了解您正在采用的方法以及为什么采用这种方法。
    猜你喜欢
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 2010-09-10
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    相关资源
    最近更新 更多