1

我正在尝试使用没有 datetime2 数据类型的 SQL Server 2005 运行 Hangfire,所以我发现这个讨论非常有帮助。这解决了一个问题,但它打开了另一个问题。现在我得到错误:

找不到 SqlMapper.cs。System.Data.dll 中出现“System.Data.SqlClient.SqlException”类型的异常,但未在用户代码中处理。“合并”附近的语法不正确。

我在 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 子句。任何帮助,将不胜感激。

4

0 回答 0