gpt4 book ai didi

sql - 使用 F# 3.0 进行动态 SQL 查询?

转载 作者:行者123 更新时间:2023-12-04 21:53:37 24 4
gpt4 key购买 nike

我曾尝试使用 FLINQ,但它在 F# 3.0 beta 中已经过时了。

有人能给我一些关于如何在 F# 中创建动态 SQL 查询的指示吗?

最佳答案

我们最近开发了一个库,FSharpComposableQuery ,旨在支持 F# 3.0 及更高版本中更灵活的查询表达式组合。它旨在作为重载标准查询构建器的直接替代品。

Tomas 的例子可以修改如下:

open FSharpComposableQuery

// Initial query that simply selects products
let q1 =
<@ query { for p in ctx.Products do
select p } @>

// Create a new query that specifies only expensive products
let q2 =
query { for p in %q1 do
where (p.UnitPrice.Value > 100.0M) }

这只是引用查询表达式并将其拼接到第二个查询中。但是,这会导致引用的查询表达式为默认 QueryBuilder可能无法变成单个查询,因为 q2计算为(等效的)表达式
query { for p in (query { for p in ctx.Products do 
select p }) do
where (p.UnitPrice.Value > 100.0M) }

其中(如 Tomas 的原始代码中)可能会通过将所有产品加载到内存中并在内存中进行选择来评估,而我们真正想要的是:
query { for p in ctx.Products do
where (p.UnitPrice.Value > 100.0M) }

这将变成一个 SQL 选择查询。 FSharpComposableQuery覆盖 QueryBuilder执行此操作,其中包括转换。因此,可以更自由地使用引用和反引用来组合查询。

项目主页在此: http://fsprojects.github.io/FSharp.Linq.ComposableQuery/

在我刚刚提供给另一个关于动态查询的(旧)问题的答案中还有更多讨论: How do you compose query expressions in F#?

非常欢迎评论或问题(特别是如果出现问题或您认为应该起作用的东西不起作用)。

[编辑:更新了项目页面的链接,这些页面刚刚更改为删除了“实验”一词。]

关于sql - 使用 F# 3.0 进行动态 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10158512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com