我正在使用Dapper在一个ASP.NET Core 6 Web API项目中,后端数据库是SQL Server 2016。Dapper的ExecuteScalar
方法返回了一个错误。
类型为System.TimeOnly的成员DepartureTime不能用作参数值
有什么解决办法吗?
public virtual int Create(TModel entity)
{
int result = -1;
var insertQuery = QueryGenerator.GenerateInsertQuery(typeof(TModel));
var factory = new SqlServerDbConnectionFactory(connectionString);
var profiler = CustomDbProfiler.Current;
using (var connection = ProfiledDbConnectionFactory.New(factory, profiler))
{
try
{
if (connection.State == ConnectionState.Closed)
{
connection.ConnectionString = connectionString;
connection.Open();
}
result = connection.ExecuteScalar<int>(insertQuery, entity, transaction: null); // Throwing error
}
catch (Exception e)
{
var sql = profiler.GetCommands();
throw;
}
}
return result;
}
insertQuery
包含以下查询:
INSERT INTO [Flight] ([FlightNumber], [SourceCode], [DestinCode],[DepartureTime], [EffectDate], [Stops], [TravelMinutes])
VALUES (@FlightNumber, @SourceCode, @DestinCode, @DepartureTime, @EffectDate, @Stops, @TravelMinutes);
SELECT SCOPE_IDENTITY()
entity
是类型为 FlightModel
的实体:
public class FlightModel
{
public int Id { get; set; }
public string FlightNumber{ get; set; }
public string SourceCode{ get; set; }
public string DestinCode { get; set; }
public TimeOnly DepartureTime{ get; set; }
public DateOnly EffectDate { get; set; }
public int Stops{ get; set; }
public int TravelMinutes { get; set; }
}
SetValue
应该使用time.ToTimeSpan()
而不是time.ToString()
,对吗? - Dan Guzman