是否可以在 sqlkata 中查询参数化的表值函数?
Posted
技术标签:
【中文标题】是否可以在 sqlkata 中查询参数化的表值函数?【英文标题】:Is it possible to query a parametrized table-valued function in sqlkata? 【发布时间】:2018-12-11 08:44:31 【问题描述】:我有一个这样的 SQL 表值函数:
创建函数 [Foo] (@bar VARCHAR(255)) 返回@结果表 ( [第 1 列] INT, [第 2 列] INT, [第 3 列] INT, [第 4 列] INT ) ..我希望能够在 SqlKata 中对它执行查询,方法是使用适当的参数调用函数。
有可能吗?如果有怎么办?
注意:这个问题在某种程度上与 is there any way to create query including function in projection and outer apply in sqlkata? 相关,但我也需要传递一个参数。
【问题讨论】:
【参考方案1】:最简单的方法是使用FromRaw
new Query().FromRaw("[Foo](?)", bar).Select("Column")
附注:使用QueryFactory
比自己执行查询要容易得多。
var result = db.Query().FromRaw("[Foo](?)", bar).Select("Column").Get();
【讨论】:
能否更改查询条件中的参数名称? query.WhereIn(Product, Value) 这将变为 WHERE ([Product].[Name] = @p0) 但我需要正确的参数名称,例如 WHERE ([Product].[Name] = @productName)【参考方案2】:我设法获得了像 CTE 一样访问我的函数的结果,即:使用 WithRaw 和别名:
var query = new Query("MyAlias") .WithRaw("MyAlias", "Select Column1 from [Foo](@bar)" ) .Select("Column1"); var 已编译 = _compiler.Compile(query); var result1 = connection.Query(compiled.Sql, new bar = bar) .ToList();【讨论】:
以上是关于是否可以在 sqlkata 中查询参数化的表值函数?的主要内容,如果未能解决你的问题,请参考以下文章