Linq to sql LINQ2SQL在读取记录列表时切换到EF
我正在尝试从LINQ2SQL切换到EF。。。我发现一些最初使用LINQ2SQL的代码出现以下错误,并且似乎编译正确:Linq to sql LINQ2SQL在读取记录列表时切换到EF,linq-to-sql,entity-framework,linq-to-entities,csla,Linq To Sql,Entity Framework,Linq To Entities,Csla,我正在尝试从LINQ2SQL切换到EF。。。我发现一些最初使用LINQ2SQL的代码出现以下错误,并且似乎编译正确: Csla.DataPortalException: DataPortal.Fetch失败(LINQ到 实体无法识别该方法 'MyApp.Logic.UserInfo FetchUserInfo(MyApp.Data.User)' 方法,并且此方法不能为空 转换为存储表达式。) --->Csla.Reflection.CallMethodException: DataPortal
Csla.DataPortalException:
DataPortal.Fetch失败(LINQ到
实体无法识别该方法
'MyApp.Logic.UserInfo
FetchUserInfo(MyApp.Data.User)'
方法,并且此方法不能为空
转换为存储表达式。)
--->Csla.Reflection.CallMethodException:
DataPortal_获取方法调用失败
--->System.NotSupportedException:LINQ to实体无法识别
方法“MyApp.Logic.UserInfo”
FetchUserInfo(MyApp.Data.User)'
方法,并且此方法不能为空
翻译。。。
代码如下:
var data = query.Select(row => UserInfo.FetchUserInfo(row));
this.AddRange(data);
我试图读取数据列表并将实体加载到我的类中。我是EF的新手,只是觉得我忽略了一些东西
任何帮助都将不胜感激
对于那些感兴趣的人,解决方案是:
var data = query.AsEnumerable().Select(UserInfo.FetchUserInfo);
据我所知,问题在于LINQtoEntities提供程序不知道如何将自定义方法
FetchUserInfo
转换为ESQL
如果UserInfo
只是一个DTO,而UserInfo.FetchUserInfo
是一种实体到DTO的转换方法,这将有所帮助
var data = query.AsEnumerable().Select(row => UserInfo.FetchUserInfo(row));
.AsEnumerable()
调用将导致查询
结果具体化到内存对象 你能告诉我们这个FetchUserInfo
方法的实现吗?这就是诀窍!我知道我错过了一些简单的事情。。。非常感谢。