【发布时间】:2011-10-26 23:18:32
【问题描述】:
我们正在迁移一些代码以使用 Entity Framework,并有一个查询尝试对 Nullable 字段进行排序,并提供默认排序值是使用 Nullable.GetValueOrDefault(T) 函数的值为 null。
但是,在执行时它会返回以下错误:
LINQ to Entities 无法识别方法“Int32 GetValueOrDefault(Int32)”方法,并且该方法无法转换为存储表达式。
查询如下:
int magicDefaultSortValue = 250;
var query = context.MyTable.OrderBy(t => t.MyNullableSortColumn
.GetValueOrDefault(magicDefaultSortValue));
来自this answer I can see that there is a way to provide "translations" within your EDMX。我们可以为这个合并函数写一个类似的翻译吗?
注意:当我尝试时,?? 合并运算符而不是查询中的 GetValueOrDefault 确实有效。那么也许可以利用任何使这项工作发挥作用的东西?
【问题讨论】:
标签: c# .net entity-framework linq-to-entities