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

发布于 2024-09-08 06:50:34 字数 894 浏览 7 评论 0原文

我正在尝试从 LINQ2SQL 切换到 EF ...我收到一些最初与 LINQ2SQL 一起使用的代码,并且似乎可以正确编译,但出现以下错误: <代码>

<代码>

Csla.DataPortalException: DataPortal.Fetch 失败(LINQ to 实体无法识别该方法 'MyApp.Logic.UserInfo FetchUserInfo(MyApp.Data.User)' 方法,并且该方法不能 翻译成商店表达式。)

---> Csla.Reflection.CallMethodException: DataPortal_Fetch方法调用失败

---> System.NotSupportedException:LINQ to Entities 无法识别 方法“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);

I am trying to switch from LINQ2SQL to EF ... I am getting the following error with some code that originally worked with LINQ2SQL and seems to compile correctly:

Csla.DataPortalException:
DataPortal.Fetch failed (LINQ to
Entities does not recognize the method
'MyApp.Logic.UserInfo
FetchUserInfo(MyApp.Data.User)'
method, and this method cannot be
translated into a store expression.)

---> Csla.Reflection.CallMethodException:
DataPortal_Fetch method call failed

---> System.NotSupportedException: LINQ to Entities does not recognize
the method 'MyApp.Logic.UserInfo
FetchUserInfo(MyApp.Data.User)'
method, and this method cannot be
translat...

This is the code:

var data = query.Select(row => UserInfo.FetchUserInfo(row));

this.AddRange(data);

I'm trying to read a list of data and load the entities into my class. I'm new to EF and just think I am overlooking something.

Any help would be appreciated!

For those interested, the solution was:

var data = query.AsEnumerable().Select(UserInfo.FetchUserInfo);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

删除→记忆 2024-09-15 06:50:34

据我所知,问题在于 Linq to Entities 提供程序对如何将自定义方法 FetchUserInfo 转换为 ESQL 一无所知。

如果 UserInfo 只是一个 DTO,并且 UserInfo.FetchUserInfo 是一种实体到 DTO 转换方法,这将有助于

var data = query.AsEnumerable().Select(row => UserInfo.FetchUserInfo(row));

.AsEnumerable() 调用将查询结果具体化为内存对象。

As far as I can see the problem is that Linq to Entities provider knows nothing about how to translate you custom method FetchUserInfo to ESQL.

If UserInfo is just a DTO and UserInfo.FetchUserInfo is a kind of Entity to DTO conversion method this would help

var data = query.AsEnumerable().Select(row => UserInfo.FetchUserInfo(row));

.AsEnumerable() invoke will result in materialization of query results to memory objects.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文