动态表达式将DateTime转换为时间戳

时间:2014-01-10 15:25:50

标签: entity-framework entity-framework-5 db2-400

当对具有实体框架5 - db2400数据库的实体运行原始linq语句时,此where子句将呈现为良好的SQL并根据需要执行:

where entity.Number == stringNumber && entity.EffectiveDate == effectiveDate

呈现的SQL子句:

WHERE (Filter1.NUMBER = @p__linq__0) AND (Filter1.EFFECTIVE_DATE = @p__linq__1)}

但是,当使用相同的DateTime比较动态生成表达式时,SQL将作为字符串转换时间戳发送到DB2400。 DB2说,"我无法比较时间戳和日期!" (因为该列的类型为Date上的类型)。

渲染表达式:

Entity => ((Entity.Number == "somestring") And (Entity.EffectiveDate == 10/1/2012 12:00:00 AM))

呈现SQL:

WHERE (('someString' = Extent1.NUMBER)) AND (CAST('2012-10-01 00:00:00.00000' AS timestamp) = Extent6.EFFECTIVE_DATE)}

这个DateTime表达式是如何构建的?

Expression.Equal(Property, DateTime.Parse(someDateTime.ToString()));

0 个答案:

没有答案