gpt4 book ai didi

c# - LINQ to Entities 无法识别自定义方法

转载 作者:太空宇宙 更新时间:2023-11-03 18:38:12 24 4
gpt4 key购买 nike

下面的代码会产生错误:

LINQ to Entities does not recognize the method System.String GenerateSubscriptionButton(Int32) method, and this method cannot be translated into a store expression.

如何在 LINQ to Entities 中创建正确的自定义方法?

var model = _serviceRepository.GetProducts().Select(p => new ProductModel
{
Id = p.Id,
Name = p.Name,
Credits = p.Credits,
Months = p.Months,
Price = p.Price,
PayPalButton = GenerateSubscriptionButton(p.Id)
});

private string GenerateSubscriptionButton(int id)
{
return new PaymentProcessor.PayPalProcessor().CreateSubscriptionButton(id);
}

最佳答案

你不能那样做。提供商应如何将您的方法转换为 SQL?

请记住:LINQ to Entities 实际上并不执行查询的 C# 代码。相反,它解释表达式并将它们转换为 SQL。

在您的具体案例中,解决方案可能如下所示:

var model = _serviceRepository.GetProducts()
.Select(p => new ProductModel
{
Id = p.Id,
Name = p.Name,
Credits = p.Credits,
Months = p.Months,
Price = p.Price
})
.ToList()
.Select(x =>
{
x.PayPalButton = GenerateSubscriptionButton(x.Id);
return x;
});

调用 ToList 对数据库执行查询并返回结果。从那时起,查询实际上是一个 LINQ to objects 查询,其中代码不被解释而是被执行。

关于c# - LINQ to Entities 无法识别自定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12142384/

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