【发布时间】:2011-03-14 09:16:05
【问题描述】:
我正在使用 EF 4,但是当我尝试订购我的清单时它给了我错误。
Unable to cast the type 'System.String' to type 'System.Object'. LINQ to Entities only supports casting Entity Data Model primitive types.
这是我通过输入属性名称获取表达式的代码,下面的示例获取客户名称
var param = Expression.Parameter(typeof(Customer), "N");
var sortExpression = Expression.Lambda<Func<T, object>>
(Expression.Convert(Expression.Property(param, "Name"), typeof(object)), param);
我的 EF 代码是
GetObjectSet<T>().AsQueryable().OrderBy(sortExpression).Skip(0).Take(5);
我知道这是 EF 的某种类型转换问题,因为它在没有 EF 的情况下也可以工作,但是当我将它与 EF 连接时它给了我这个错误。是否有解决方法或其他什么,因为我不想使用 LINQ。
【问题讨论】:
-
您已经在使用 LINQ。
AsQueryable、OrderBy、Skip和Take都是 LINQ 运算符。 -
对不起,我提到的是 LINQ to SQL 而不是 LINQ。如果你使用 LINQ to SQL 我上面的代码可以工作。它不仅在 EF 中有效。
标签: c# model-view-controller frameworks lambda entity