NotSupportedException:System.DateOnly 类型的成员 IssueDate 不能用作参数值

问题描述 投票:0回答:1

我有以下代码将数据插入 SQL Server 数据库。数据库表

DataEntries
IssueDate
的数据类型为
Date
IssueDate = DateOnly.MinValue
有问题。当我运行以下代码时。

    DataEntry l_DataEntries = new()
    {
        CreatedAt = DateTime.Now,
        IssueDate = DateOnly.MinValue
    };
    var DataEntriesQ = @"
    INSERT [dbo].[DataEntries](
        [CreatedAt],
        [IssueDate]
    ) VALUES (
        @CreatedAt,
        @IssueDate
    ); SELECT CAST(SCOPE_IDENTITY() as int)";
    int dataEntryId = dbContext.QueryAsync<int>(DataEntriesQ, l_DataEntries).Result.SingleOrDefault();

我收到以下异常

System.AggregateException:“发生一个或多个错误。 (该会员 System.DateOnly 类型的 IssueDate 不能用作 参数值)'

内部异常:NotSupportedException:成员 System.DateOnly 类型的 IssueDate 不能用作 参数值

这是 DataEntry 的模型。

public class DataEntry
{
    ...
    public DateOnly? IssueDate { get; set; }
    public DateTime? CreatedAt { get; set; }
}
c# sql-server dapper .net-8.0
1个回答
0
投票

在撰写本文时使用最新版本的 Dapper 时遇到了这个问题。尽管有些人制作了自定义处理程序,例如可以在此处找到:https://github.com/DapperLib/Dapper/issues/1715,但我发现对我来说最快/最简单的解决方案是将我的日期设置为我的 C# 模型中的 DateTime 类型,但 SQL Server 中的 表列类型只是日期类型。这会截断时间,因为它存储在数据库中,并且目前被证明是一个很好的解决方案(直到对 DateOnly 的支持变得更好)。

© www.soinside.com 2019 - 2024. All rights reserved.