gpt4 book ai didi

vb.net - LINQ to Entities 无法识别方法 [Type] GetValue [Type]

转载 作者:行者123 更新时间:2023-12-01 14:35:36 26 4
gpt4 key购买 nike

enter image description here我有一个像这样的简单类:

Public Class CalculationParameter{
public Long TariffId{get;set;}
}

在工作流事件中,我有一个分配,如下所示:

(From tariffDetail In db.Context.TariffDetails
Where tariffDetial.TariffId = calculationParameter.TariffId).FirstOrDefault()

Dto 作为输入参数传递给 Activity。

它引发以下错误,我想知道如何分配 Id。有什么想法吗?

LINQ to Entities does not recognize the method 'Int64 GetValue[Int64](System.Activities.LocationReference)' method, and this method cannot be translated into a store expression.

如何将 calculationParameter.TariffId 分配给 tariffDetial.TariffId?!

更新:随附的屏幕截图显示了我如何尝试将 calculationParameter.TariffId 分配给 tariffDetail.TariffId (car.Id = Dto.Id) 并且查询结果应分配给 CurrentTrafficDetail 对象。

最佳答案

这是你的问题。不知道有没有办法解决。

正如您在评论(现已删除,不幸的是我必须回答)中所说,您得到的异常(exception)是

LINQ to Entities does not recognize the method Int64 GetValue[Int64](System.Activities.LocationReference) method, and this method cannot be translated into a store expression.

在您的 Linq 查询中,calculationParameter 是在工作流上定义的变量。该变量实际上是一个扩展类型 System.Activities.LocationReferenceNOT CalculationParameter 的实例。

通常,当工作流执行时,LocationReference 包含查找分配给它的值所需的所有信息。直到最后一刻才检索到该值。在运行时,检索过程(获取执行上下文、获取值、将其转换为预期类型)由工作流管理。

但是,当您将 Linq 引入组合时,我们会遇到您遇到的问题。您可能知道也可能不知道,您的表达式会被编译成相同的扩展方法版本。

(From tariffDetail In db.Context.TariffDetails  
Where tariffDetial.TariffId = calculationParameter.TariffId)
.FirstOrDefault()

编译为

db.Context.TariffDetails
.Where(x => x.TariffId = calculationParameter.TariffId)
.FirstOrDefault();

执行此代码时,L2E 实际上并不执行此代码。它得到解释并转换为针对数据库执行的 SQL 查询。

由于解释器不是无所不知的,所以有一个定义明确的 set of limitations on what methods you can use in a L2S query.

不幸的是,获取 LocationReference 的当前值 不是其中之一

TL:DR 你不能这样做。

至于解决方法,我认为您唯一可以做的就是在您的数据上下文类型上创建一系列扩展方法,或者将方法添加到您可以从表达式编辑器中调用的 CalculationParameter 类.您可以在这些方法中创建 Linq to Entities 查询,因为所有类型都已被工作流运行时取消引用,这意味着您不必担心 L2E 解释器在 LocationReferences 上阻塞。

*编辑:解决方法 can be found here (感谢 Slauma 在对问题的评论中提到了这一点)

关于vb.net - LINQ to Entities 无法识别方法 [Type] GetValue [Type],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9707339/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com