J'ai une requête Linq2Sql qui ressemble à ceci:Est-ce vraiment une InvalidOperationException possible?
var data = from d in dc.GAMEs
where (d.GAMEDATE + d.GAMETIME.Value.TimeOfDay) >= DateTime.Now
&& d.GAMESTAT == 'O' && d.GAMETYPE == 0 select d;
ReSharper indiquent qu'il est « d.GAMETIME.Value.TimeOfDay » en bleu et en me disant qu'il est un possible System.InvalidOperationException. Bien que j'obtiens cela si c'était du code C#, référencer la valeur sans vérifier si elle a une valeur serait tel, je ne suis pas sûr que ce soit vrai pour une requête Linq.
Le réel SQL généré semble horrible, et me donne envie de brûler mes yeux, mais je ne vois rien qui ressemble à une référence nulle. Puis-je ignorer cela en toute sécurité?
(ignorer pour le moment les autres questions, comme si elle renvoie les résultats attendus)
EDIT:
Sur plus pensée, je peux voir comment le pourrait-dessus provoquer une exception dans une requête de LinqToObjects , et éventuellement d'autres types (XML?). Alors oui, je suppose que Resharper est en train d'être en sécurité.
Je n'ai aucun contrôle sur la structure de la base de données, il est utilisé par un outil tiers et doit être conforme à leur schéma. FWIW, GAMEDATE est également nullable, mais il était inutile d'accéder à tous les membres, comme cela était implicite. Aussi, votre modification n'est pas vraiment la même requête puisqu'une gamedate sans un temps devrait être comparée à seulement aujourd'hui, pas maintenant. –
Bon, par rapport à aujourd'hui, c'est le repli. Dans le formulaire que vous aviez, lorsque GAMETIME est NULL, il se bloque simplement. –