DateTime 的 ServiceStack ORMLite SqlList 问题
ServiceStack ORMLite SqlList issue with DateTime
我正在从 v4.0.36 升级到 v4.0.46,我遇到了问题,其中通过 API 生成的 SQL 没有转换 DateTime 值正确:
public static List<T> SqlList<T> (this IDbConnection dbConn, string sql, object anonType = null);
DateTime 将是一个属性,作为传递给方法的对象的一部分。
在 v4.0.36 上,DateTime 值将导致字符串 "yyyy-MM-dd HH:mm:ss"
但是在升级到 v4.0.46 之后,日期时间值现在是 "dd/MM/yyyy HH:mm:ss AM"
并且由于此依赖于日期的查询现在不会返回任何记录,因为 MySQL 无法识别此格式。
我缺少配置吗?或者关于我需要进行哪些更改才能获得与 4.0.36 相同的行为的任何指示?
现在应该解决这个问题 from this commit, available from v4.0.47 that's now available on MyGet 它支持以下每种调用方式:
class DateTest
{
public DateTime Test { get; set; }
public DateTime? TestNullable { get; set; }
}
using (var db = OpenDbConnection())
{
db.DropAndCreateTable<DateTest>();
var dateTime = new DateTime(2001, 1, 1, 1, 1, 1);
db.Insert(new DateTest{ Test = dateTime, TestNullable = dateTime });
var row = db.SqlList<DateTest>(
"SELECT * FROM DateTest WHERE Test = @dateTime"), new { dateTime });
row = db.SqlList<DateTest>(
"SELECT * FROM DateTest WHERE TestNullable = @dateTime"), new { dateTime });
DateTime? nullDate = dateTime;
row = db.SqlList<DateTest>(
"SELECT * FROM DateTest WHERE TestNullable = @nullDate"), new { nullDate });
}
根据我使用 4.0.52 的经验,这仍然会因 DateTime 的空值而中断?。出行方便;
SqlServerDialect.Provider.RegisterConverter<DateTime?>(new SqlServerDateTimeConverter());
我正在从 v4.0.36 升级到 v4.0.46,我遇到了问题,其中通过 API 生成的 SQL 没有转换 DateTime 值正确:
public static List<T> SqlList<T> (this IDbConnection dbConn, string sql, object anonType = null);
DateTime 将是一个属性,作为传递给方法的对象的一部分。
在 v4.0.36 上,DateTime 值将导致字符串 "yyyy-MM-dd HH:mm:ss"
但是在升级到 v4.0.46 之后,日期时间值现在是 "dd/MM/yyyy HH:mm:ss AM"
并且由于此依赖于日期的查询现在不会返回任何记录,因为 MySQL 无法识别此格式。
我缺少配置吗?或者关于我需要进行哪些更改才能获得与 4.0.36 相同的行为的任何指示?
现在应该解决这个问题 from this commit, available from v4.0.47 that's now available on MyGet 它支持以下每种调用方式:
class DateTest
{
public DateTime Test { get; set; }
public DateTime? TestNullable { get; set; }
}
using (var db = OpenDbConnection())
{
db.DropAndCreateTable<DateTest>();
var dateTime = new DateTime(2001, 1, 1, 1, 1, 1);
db.Insert(new DateTest{ Test = dateTime, TestNullable = dateTime });
var row = db.SqlList<DateTest>(
"SELECT * FROM DateTest WHERE Test = @dateTime"), new { dateTime });
row = db.SqlList<DateTest>(
"SELECT * FROM DateTest WHERE TestNullable = @dateTime"), new { dateTime });
DateTime? nullDate = dateTime;
row = db.SqlList<DateTest>(
"SELECT * FROM DateTest WHERE TestNullable = @nullDate"), new { nullDate });
}
根据我使用 4.0.52 的经验,这仍然会因 DateTime 的空值而中断?。出行方便;
SqlServerDialect.Provider.RegisterConverter<DateTime?>(new SqlServerDateTimeConverter());