我正在尝试通过LoadSelect加载具有引用的对象的日期过滤列表。但是,生成查询以加载引用时,查询结构不正确,并且我收到“从字符串转换日期和/或时间时转换失败”。错误
这是POCO课
[Alias("Users")]
public class User
{
public Guid Id { get; set; }
public string Name{ get; set; }
public DateTimeOffset CreatedDate { get; set; }
public DateTimeOffset ModifiedDate { get; set; }
public DateTimeOffset CompletedDate { get; set; }
[Reference]
public Account Account { get; set; }
[References(typeof(Account))]
public Guid AccountId { get; set; }
}
[Alias("Accounts")]
public class Account
{
public Guid Id { get; set; }
public string Title { get; set; }
}
通过以下查询
var query = db.From<User>()
.Where(x => x.CreatedDate > fromDate)
.And(x => x.CreatedDate < toDate);
var result = db.LoadSelect(query);
方言为SqlServer2016Dialect,日期字段为datetimeoffset(7)
这将产生以下sql查询
exec sp_executesql N'SELECT "Id", "Name", "CreatedDate", "ModifiedDate", "CompletedDate", "AccountId"
FROM "Users"
WHERE ("CreatedDate" > @0) AND ("CreatedDate" < @1)',N'@0 datetimeoffset(7),@1 datetimeoffset(7)',@0='2017-08-27 00:00:00 +10:00',@1='2019-04-19 23:59:59 +10:00'
这是试图加载引用的查询
exec sp_executesql N'SELECT "Id", "Title" FROM "Accounts" WHERE "Id" IN (SELECT "Users"."AccountId"
FROM "Users"
WHERE ("CreatedDate" > ''27/08/2017 00:00:00 +10:00'') AND ("CreatedDate" < ''19/04/2019 23:59:59 +10:00''))',N'@0 datetimeoffset(7),@1 datetimeoffset(7)',@0='2017-08-27 00:00:00 +10:00',@1='2019-04-19 23:59:59 +10:00'
运行此查询将导致“从字符串转换日期和/或时间时转换失败。”
如果我从该查询中取消了where命令,它将按预期工作。
任何帮助都将不胜感激!