C# 其他信息:LINQ to Entities无法识别该方法,并且无法将该方法转换为存储表达式
我正在尝试从DB获取信息,当我获取信息时,我收到以下错误: EntityFramework.SqlServer.dll中发生类型为“System.NotSupportedException”的异常,但未在用户代码中处理 其他信息:LINQ to Entities无法识别方法“Double GetBalance(Int32,Double,Double)”方法,并且无法将此方法转换为存储表达式 代码如下:C# 其他信息:LINQ to Entities无法识别该方法,并且无法将该方法转换为存储表达式,c#,entity-framework,linq,C#,Entity Framework,Linq,我正在尝试从DB获取信息,当我获取信息时,我收到以下错误: EntityFramework.SqlServer.dll中发生类型为“System.NotSupportedException”的异常,但未在用户代码中处理 其他信息:LINQ to Entities无法识别方法“Double GetBalance(Int32,Double,Double)”方法,并且无法将此方法转换为存储表达式 代码如下: public Model GetData(int saleId) { usin
public Model GetData(int saleId)
{
using (var context = new ABCD())
{
var data = context.MY_TABLE
.Where(w => w.ID == saleId)
.Select(s => new Model
{
ClinicId = s.CLINIC_ID,
PatientId = s.PATIENT_ID,
Date = s.DOS,
ProductBalance = GetBalance(s.ID, (double)s.TOTAL_PRICE, (double)s.TAX_PERCENTAGE),
})
.First();
return data;
}
}
“GetBalance()”函数在我的代码的其他部分中有更多的使用,但我没有遇到任何问题。这就是功能:
public double GetBalance(int saleId, double TotalCharge, double TaxPercent) {
var ChargeWithTax = Math.Round((TotalCharge + ((TaxPercent / 100) * TotalCharge)), 2);
var PaymentWriteOff = Math.Round(GetPayments(saleId) + GetTotalWriteOff(saleId), 2);
return Math.Floor((ChargeWithTax - PaymentWriteOff) * 100) / 100;
}
有什么帮助吗?谢谢 提供程序无法识别您的本地方法
GetBalance
,无法将其转换为原始SQL
您可以获取普通数据库对象,并在本地使用本地方法创建本地对象:
var s = context.MY_TABLE.First(w => w.ID == saleId);
var data = new Model()
{
ClinicId = s.CLINIC_ID,
PatientId = s.PATIENT_ID,
Date = s.DOS,
ProductBalance = GetBalance(s.ID, (double)s.TOTAL_PRICE, (double)s.TAX_PERCENTAGE)
};
return data;
在LINQ中调用IQueryable中的方法是一种非常糟糕的做法 您尝试调用方法
GetBalance()
。我们不能那样做
如需更详细的解释,请阅读缺失的
,是否可能使用
?