我正在尝试使用没有datetime2数据类型的SQL Server 2005来运行Hangfire,所以我发现this discussion非常有帮助。这解决了一个问题,但它开了另一个。现在我收到了错误:
找不到SqlMapper.cs。类型例外 ' System.Data.SqlClient.SqlException'发生在System.Data.dll但是 未在用户代码中处理。 ' merge'附近的语法不正确。
我在GitHub上找到了SqlMapper.cs的源代码。 Dapper.1.38包是我添加到项目中的包。即便如此,我收到的消息是源文件与构建模块时不同。
无论如何我做了一些调试,并且能够找到导致异常的SQL命令。就是这样:
merge HangFire.Server as Target
using (VALUES (@id, @data, @heartbeat)) as Source (Id, Data, Heartbeat)
on Target.Id = Source.Id
when matched then
update set Data = Source.Data, LastHeartbeat = Source.Heartbeat
when not matched then
insert (Id, Data, LastHeartbeat) values (Source.Id, Source.Data, Source.Heartbeat);
合并命令语法可能与SQL Server 2005不兼容,但我无法找出异常的原因。我怀疑VALUES条款。任何帮助将不胜感激。