无法使用F#TypeProvider读取日期

时间:2016-06-15 10:48:35

标签: sql-server f# type-providers

我正在尝试使用F#控制台应用程序来查询在Docker中运行的MS SQL SERVER。我正在使用SQLProvider对数据库运行select语句,一开始只提取一个int ID。它在Windows中运行良好,但在Docker容器中不行。它失败并显示错误消息:

<ul>
  <li><a href="#" name="link1">link1</a></li>
  <li><a href="#" name="link2">link2</a></li>
  <li><a href="#" name="link3">link3</a></li>
</ul>

参数名称:SqlDbType

我已尝试过mono:4.2.3.4和fhrp / fsharp Docker镜像。我也和我一起拉FSharp.Core库。

任何帮助将不胜感激。感谢

编辑: Docker容器在Linux上运行,单声道版本为4.22.2。

这是我的疑问:

 System.ArgumentOutOfRangeException: No mapping exists from SqlDbType Date to a known DbType.

stacktrace:

type private connection = SqlDataProvider<ConnectionString="CONNECTIONSTRING",
                                      DatabaseVendor=Common.DatabaseProviderTypes.MSSQLSERVER,
                                      UseOptionTypes=true>

let private ctx = connection.GetDataContext()

let private application = "E-Mail an PH - eFeedback"

let history =
    query {
        for eh in ctx.Dbo.ActionHistoryEmail do
        join gah in ctx.Dbo.GenericActionHistory on (eh.Id = gah.Id)
        where (eh.Application = application)
        select gah.Id
    }
    |> Seq.toList

1 个答案:

答案 0 :(得分:3)

.NET还没有Date类型。在标准.NET Date中映射到DateTime。 Mono的SqlParameter在三个地方执行此映射。其中两个将DateDateTime映射到相同的类型。 third虽然没有映射date。我怀疑调用堆栈显示在SetSqlDbType内抛出异常。

请在问题

中发布异常的调用堆栈

似乎有类似的Mono bug关于DateTime2于2014年提交。这已得到修复,但Date仍然缺失