我有这个编译的查询:
private static Func<DBContext, Foo> FooQuery = CompiledQuery.Compile<DBContext, Foo>(
_db => _db.FooTable.SingleOrDefault(f => f.DeletionDate == null || f.DeletionDate > DateTime.UtcNow)
);
当我运行一次时,它会返回预期的 Foo 对象。
但是,即使在数据库中设置了该对象的 DeletionDate 之后,它仍然返回相同的对象——我期待 null。(它在回收应用程序池后返回 null,正如预期的那样。)
出于某种原因,当我改用以下编译查询(并传入 DateTime.UtcNow)时,它可以工作,但我不确定为什么。
private static Func<DBContext, DateTime, Foo> FooQuery = CompiledQuery.Compile<DBContext, DateTime, Foo>(
(_db, now) => _db.FooTable.SingleOrDefault(f => f.DeletionDate == null || f.DeletionDate > now)
);