我正在使用启用了可过滤选项的DateTime列。当我在此列上应用过滤器时,request.Filters具有有效的DateTime,但在调用SQL Server时将应用不兼容的格式。这是我的代码:
public async Task<JsonResult> OnGetDataAsync([DataSourceRequest]DataSourceRequest request, CustomFilterModel customFilters)
{
IQueryable<DAL.Product> products = this.productService.GetByCriteria(customFilters);
JsonSerializerSettings jsonSettings = new JsonSerializerSettings()
{
ContractResolver = new DefaultContractResolver()
};
return new JsonResult(await products.ToDataSourceResultAsync(request), jsonSettings);
}
这是EF生成的内容:(为清楚起见,缩写为
SELECT ....
WHERE [p].[DateAdded] <= '2018-10-01T00:00:00.0000000'
错误::System.Data.SqlClient.SqlException(0x80131904):从字符串转换日期和/或时间时转换失败。
基本上,当我直接在SSMS中运行它时,生成的SQL查询不起作用。仅当我将日期转换为'2018-10-01T00:00:00'
时才有效技术堆栈:.NET Core 2.2,Razor Pages,Kendo 2018.3.911,SQL 2018