У меня есть этот скомпилированный запрос:Составитель запрос возвращает одно и то же каждый раз, когда
private static Func<DBContext, Foo> FooQuery = CompiledQuery.Compile<DBContext, Foo>(
_db => _db.FooTable.SingleOrDefault(f => f.DeletionDate == null || f.DeletionDate > DateTime.UtcNow)
);
Когда я запускаю его один раз, он возвращает ожидаемый объект Foo.
Но тогда, даже после того, как DeletionDate этого объекта установлен в db, он все равно возвращает тот же объект - я ожидаю 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)
);
Спасибо. Слишком плохо DateTime.UtcNow не заменяется GETUTCDATE() в SQL. – Emmett