【问题标题】:How to use Dapper LINQ with TableDirect (without embedded SQL) with ORACLE?如何将 Dapper LINQ 与 TableDirect(无嵌入式 SQL)与 ORACLE 一起使用?
【发布时间】:2019-11-30 06:21:51
【问题描述】:

我尝试了 DapperExtensions、Dapper.Extensions.Linq 和 linq2dapper 无济于事。我会尝试Dapper.SimpleCRUD-with-Oracle。我可能会改用存储过程来解决。我想使用没有嵌入式 SQL 语句的 TableDirect。如何将 Dapper 和 Linq 与 TableDirect 一起使用?或者,如何在没有嵌入式 SQL 的情况下使用 TableDirect 并过滤表?

以下是我的问题:

  • 如果没有运行时错误,我无法创建谓词。
  • 我需要缺少配置
  • 我收到有关表的 ORA 错误提示“列不正确,运行时错误”。

如何将 Dapper LINQ 与 TableDirect(无嵌入式 SQL)与 ORACLE 一起使用?

【问题讨论】:

    标签: linq dapper dapper-extensions dapper-contrib dapper-simplecrud


    【解决方案1】:

    您可以使用简单的 Dapper 来实现这一点。例如,看看 Dapper 的以下代码:

    public static IEnumerable<T> Query<T>(this IDbConnection cnn, string sql, object param = null, IDbTransaction transaction = null, bool buffered = true, int? commandTimeout = default(int?), CommandType? commandType = default(CommandType?));
    

    查看最后一个commandType 参数。它支持您正在寻找的TableDirect 值。

    至于你提到的 Dapper 的其他扩展,我认为他们不会支持它。我确定 Dapper Extensions 不支持它;不知道其他人。

    这是因为,这些扩展是基于 Dapper 编写的基本查询生成器。因此,您使用它们来生成查询,在这种情况下,该参数值将/应该是Text。如果您想使用其他值,请绕过扩展并使用简单的 Dapper。

    如果您只想提供表名或存储过程名,为什么要使用查询生成器?只需使用 Dapper。

    【讨论】:

    • 我想做类似 TableDirect = ATable, r=>r.AFilter = "SelectedRecs"
    • 我只会使用 ORM。
    【解决方案2】:

    我用过 //https://github.com/jmo21/Dapper.SimpleCRUD-with-Oracle-/blob/master/Dapper.SimpleCRUD/SimpleCRUD.cs 。此 ORACLE 方言没有 nuget 包。它只是混淆了 WHERE 子句,这是一个答案,当我的组织可能不喜欢 SELECT.. FROM ... WHERE ...

    在任何情况下,我们都不可能进行 SQL 注入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-26
      • 2020-05-14
      • 2013-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多