c# – 帮我理解“LINQ to Entities只支持转换Entity Data Model
发布时间:2020-12-15 06:27:58 所属栏目:百科 来源:网络整理
导读:我有一个工作单位和使用EF 4和POCO的仓库.由于EF需要一个有序集才可以跳过()和Take(),我添加了以下单元测试(没有mocks)只是为了拉出一个记录,看看它是否有效. var myList = UOW.EntityRepo.Get( orderbyLambda: p = p.ID,page: 1,pageSize: 1); 这导致order
我有一个工作单位和使用EF 4和POCO的仓库.由于EF需要一个有序集才可以跳过()和Take(),我添加了以下单元测试(没有mocks)只是为了拉出一个记录,看看它是否有效.
var myList = UOW.EntityRepo.Get( orderbyLambda: p => p.ID,page: 1,pageSize: 1); 这导致order byLambda = {p =>转换(p.ID)}和枚举期间的错误. ID是一个tinyint(Int16 / short) 那么为什么不能通过ID来排序?更多关于错误 无法将类型“System.Int16”转换为键入“System.Object”. 我将order byLine定义为表达式< Func< E,对象>> orderbyLambda 编辑: 真正的杀手是我这样做: orderbyLambda: p => new { p.ID } 它的作品…为什么? 解决方法
发现“对象”命令和恐慌;它知道如何通过字符串,int,short,DateTime等进行排序 – 但是对象有点太模糊.
您将需要正确键入实际的lambda;最简单的方法是使Get通用,即 .... Get<TIdentity>( Expression<Func<E,TIdentity>> orderbyLambda,int page,int pageSize) 接着: orderbyLambda: p => p.ID 应该(没有你改变调用者的代码),在这种情况下通过泛型类型推断自动使得Get< short>(…).另一个选项是将其保留为< E,object>,而是在接收器处重写表达式树.更多的工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |