【发布时间】:2021-06-17 03:59:25
【问题描述】:
我正在使用带有动态 Linq 库的实体框架。 有这样的代码
var myDate = new DateTime(2021, 01, 01);
var res = dbContext.MyEntities.Where("CreateDate < @0", myDate);
如果我在本地集合上运行相同的查询,它运行良好,但在数据库上它返回错误: "从字符串转换日期和/或时间时转换失败。"
我检查了 DB Profiler,原因是传递给数据库的格式。它将日期转换为“2021-01-01T00:00:00.0000000”而不是预期的“2021-01-01 00:00:00.000”,结果有类似的查询
SELECT * FROM [MyEntity] AS [a]
WHERE [a].[CreateDate] < '2021-01-01T00:00:00.0000000'
因为 SQL 无法解析此字符串而产生错误。尝试将参数指定为字符串,但 Dynamic Linq 仍将其转换为此格式并在结果中给出相同的错误。有什么办法可以解决这个问题吗?
【问题讨论】:
-
我认为这可能是be a duplicate,但我不确定,所以我不会举报。
-
我假设您的实际代码使用更有趣的搜索条件?因为您不应该在该示例中使用动态 linq。
标签: c# sql entity-framework datetime dynamic-linq