我们正在将一些代码迁移到Entity Framework,并且有一个查询尝试对Nullable字段进行排序,如果该值为null,则使用Nullable.GetValueOrDefault(T)函数提供默认排序值。
但是,在执行时它会返回以下错误:
LINQ to Entities不识别'Int32 GetValueOrDefault(Int32)'方法,这个方法无法转换成存储表达式。
查询如下:
但是,在执行时它会返回以下错误:
LINQ to Entities不识别'Int32 GetValueOrDefault(Int32)'方法,这个方法无法转换成存储表达式。
查询如下:
int magicDefaultSortValue = 250;
var query = context.MyTable.OrderBy(t => t.MyNullableSortColumn
.GetValueOrDefault(magicDefaultSortValue));
从这个答案中,我可以看到在EDMX中提供“翻译”的方法。我们能否为这个合并函数编写类似的翻译呢?
注意:当我尝试使用查询中的??
合并运算符而不是GetValueOrDefault时,它确实起作用。因此,也许可以利用任何使其工作的东西?
??
可以工作后,希望不必编辑我已经针对LINQ To SQL上下文编写的使用GetValueOrDefault()的现有查询。 - Reddog