12
votes

Manipulation des valeurs nulles dans la clause d'où utilise Linq-to-SQL

La requête LINQ-TO-SQL dans Visual Studio génère une requête SQL avec des erreurs. Dans Linqpad, la même requête Linq utilisant la même base de données (ou DataContext) fonctionne simplement bien.

Query Linq h3> xxx pré>

Voici une petite partie de SQL générée où l'erreur se produit. : P>

if (!acces.IdRole.HasValue) { acces.IdRole = null; }


0 commentaires

4 Réponses :


0
votes

Avez-vous essayé de vérifier si vos propriétés avaient des valeurs avec la propriété HasValues ​​fournie par les nullables?

where t.IdRole == access.IdRole.HasValues ? access.IdRole.Value : null


0 commentaires

11
votes

Essayez ceci:

where object.Equals(t.IdRole, access.IdRole)


1 commentaires

Cela fonctionne! Mais je ne comprends toujours pas pourquoi Visual Studio ne génère pas exactement la même requête SQL que Linqpad ... LINQPAD gère les valeurs null / références différemment? Quoi qu'il en soit, merci.



6
votes

Utilisez

SELECT [t0].[StreetId], [t0].[Prefix], [t0].[Suffix]
FROM [Street] AS [t0]
WHERE ([t0].[Suffix] IS NOT NULL) AND ([t0].[Suffix] = @p0) 
         AND ([t0].[Prefix] IS NULL)


0 commentaires