database - F# SQLProvider - where 子句中的 NULL

标签 database f# type-providers

我有一个查询,我想在其中获取特定列中具有 NULL 的所有记录:

query {
    for a in db.Dbo.DataAlert do
    where (a.DateSent = null)
    select a
}

但是,这会引发一个错误,指出 null 不是有效值。

编写该查询的正确方法是什么?

更新:我正在使用 this SQLProvider .

最佳答案

您可以通过指定 UseOptionTypes 为可为空的列生成选项类型静态参数。默认值为 false,它返回例如 0 而不是 NULL。这在文档中没有很好的记录,例如 Querying 中没有提及。文档页面,并且在 Home 中只有一个示例页面。

将 UseOptionTypes 设置为 true 后:

type sql = SqlDataProvider< 
              ConnectionString = connectionString,
              DatabaseVendor = Common.DatabaseProviderTypes.MSSQLSERVER,
              UseOptionTypes = true
              >

可空字段将返回 Option 类型,允许您编写:

query {
    for a in db.Dbo.DataAlert do
    where (a.DateSent = None)
    select a
}

关于database - F# SQLProvider - where 子句中的 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44256163/

相关文章:

f# - 在不同的泛型实例中实现相同的接口(interface)

f# - 如何检查列表是否包含具有类型的可区分联合案例?

database - 如何使用 F# 3.0 类型提供程序 SqlDataConnection 连接到本地计算机上的 Microsoft Access 数据库 .mdb?

database - 数据库模式与数据库表空间?

c# - 如何在更新另一个表时自动更新一个表使用 C#

php - 检查数据库中的用户名,避免重复

sql-server - 使用 dacpac 获取 T-SQL 输入和输出?

mysql - 行的最小值和最大值,而不是列的最小值和最大值

f# - FSharp : Using CSV Type Provider Async

f# - 如何引用 TypeProvider 创建的 'generated' 类型