Estamos migrando algunos códigos para usar Entity Framework y tenemos una consulta que está tratando de ordenar en un campo Nullable y proporciona un valor de clasificación predeterminado; el valor es nulo utilizando el Nullable.GetValueOrDefault(T) función.OrderBy en un Nullable <int> con un valor predeterminado en Entity Framework
Sin embargo, tras la ejecución devuelve el siguiente error:
LINQ to Entities does not recognize the method 'Int32 GetValueOrDefault(Int32)' method, and this method cannot be translated into a store expression.
La consulta se parece a:
int magicDefaultSortValue = 250;
var query = context.MyTable.OrderBy(t => t.MyNullableSortColumn
.GetValueOrDefault(magicDefaultSortValue));
De this answer I can see that there is a way to provide "translations" within your EDMX. ¿Podríamos escribir una traducción similar para esta función coalescente?
NOTA: Cuando lo intenté, el operador de coalescencia ??
en lugar de GetValueOrDefault en la consulta funciona. Entonces, ¿podría funcionar lo que sea que haga ese trabajo?
Gracias! Sin embargo, después de encontrar el '??' para trabajar, esperaba no tener que editar mis consultas existentes (escritas en un contexto LINQ To SQL) que ya estaban usando GetValueOrDefault(). – Reddog