cette requête compilé:requête Compilé retourne la même chose à chaque fois que je
private static Func<DBContext, Foo> FooQuery = CompiledQuery.Compile<DBContext, Foo>(
_db => _db.FooTable.SingleOrDefault(f => f.DeletionDate == null || f.DeletionDate > DateTime.UtcNow)
);
Quand je lance une fois, il retourne l'objet Foo attendu. Mais alors, même après que DeletionDate de cet objet est défini dans la base de données, il renvoie toujours le même objet - j'attends null. (Il renvoie null, comme prévu, après avoir recyclé le pool d'applications.)
Pour une raison quelconque, cela fonctionne lorsque j'utilise la requête compilée suivante à la place (et transmettez DateTime.UtcNow), mais je ne sais pas pourquoi.
private static Func<DBContext, DateTime, Foo> FooQuery = CompiledQuery.Compile<DBContext, DateTime, Foo>(
(_db, now) => _db.FooTable.SingleOrDefault(f => f.DeletionDate == null || f.DeletionDate > now)
);
Merci. Dommage que DateTime.UtcNow n'est pas remplacé par GETUTCDATE() dans le SQL. – Emmett