tl; dr
Si utiliza DbContext en EF6 este es fijo.
Si está utilizando EF5 (u ObjectContext en EF6) necesita establecer ObjectContext.ContextOptions.UseCSharpNullComparisonBehavior en verdadero. Para hacer esto en DbContext, use esto:
((IObjectContextAdapter)db).ObjectContext.ContextOptions.UseCSharpNullComparisonBehavior = true;
.
Más detalles
La causa principal de este problema es una diferencia en la forma en la base de datos se comparan los valores nulos y la forma en C# compara los valores nulos. Como escribe su consulta en C#, quiere usar la semántica de C#.
En EF5 introdujimos ObjectContext.ContextOptions.UseCSharpNullComparisonBehavior, que le permitió optar por usar la semántica de C# en lugar de la semántica de la base de datos. El valor predeterminado es falso (para que las consultas existentes no comiencen mágicamente a devolver resultados diferentes cuando se actualiza a EF5). Pero puede establecerlo en verdadero y sus consultas devolverán filas.
Si está utilizando DbContext en EF5 que tienen que bajar a la ObjectContext para configurarlo:
((IObjectContextAdapter)db).ObjectContext.ContextOptions.UseCSharpNullComparisonBehavior = true;
Si está utilizando EF6, a continuación, que ya esté configurado como true en DbContext por lo que son buenos para ir . Decidimos que esto causa tanta confusión que valió la pena tener el impacto potencial en las consultas existentes.
+1 Apesta, pero es la única forma en que parece = ( – Francisco
Consulte mi respuesta a continuación, esto se soluciona en EF6 y puede optar por una corrección en EF5. –