Linq to sql LINQ2SQL在读取记录列表时切换到EF

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

我正在尝试从LINQ2SQL切换到EF。。。我发现一些最初使用LINQ2SQL的代码出现以下错误,并且似乎编译正确:

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
方法的实现吗?这就是诀窍!我知道我错过了一些简单的事情。。。非常感谢。