我使用Entity Framework 5连接到DB2数据库(代码优先)。
我尝试在两个日期之间进行简单比较,作为我的WHERE子句的条件:
using (MEW_Context context = new DataAccess.MEW_Context())
{
var query = context.MIList.AsQueryable();
DateTime today = DateTime.Today;
DateTime lastSunday = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek);
query = query.Where(i => lastSunday != today && lastSunday <= i.ScheduleDate);
}
生成的SQL:
SELECT
Extent1.ITEM_NO AS ITEM_NO
FROM TESTDB2.VLS_MISS_INST_SUM AS Extent1
WHERE (@p__linq__0 <> @p__linq__1) AND (@p__linq__2 <= Extent1.SCH_DATE)
我收到以下错误:
InnerException = {&#34; ERROR [42609] [IBM] [DB2] SQL0417N要准备的语句字符串包含参数标记作为同一运算符的操作数。&#34;}
我还注意到生成的SQL没有正确地将条件包装为要评估的单个语句。
有没有人对如何让这个日期比较条件起作用有任何建议?非常感谢任何帮助,谢谢。
答案 0 :(得分:0)
我不知道你想要实现的目标
lastSunday != 1-1-0001
因为那是做什么的。
仅仅因为lastSunday
永远不会超过7天而且它总是有值而完成第二次比较就足够了。
显然,DB2查询提供程序不允许操作数对两个外部变量进行操作,仅对数据库列和变量进行操作。