private decimal GetBankAccountCashierTotal()
{
var company = _context.Company.FirstOrDefault();
return _context.PersonBankAgencyAccount
.Where(p => p.PersonID.Equals(company.PersonID))
.Where(c => c.BankAgencyAccountBalance
.Any(b => b.Reference <= DateTime.Now))
.Select(x => x.BankAgencyAccountBalance
.Where(d => d.Reference.Date <= DateTime.Now)
.OrderByDescending(d => d.Reference)
.FirstOrDefault()
.CurrentBalance)
.sum();
}
Это мой полный метод, при вызове этого метода я получаю исключениеLINQ к SQL, не может выполнить агрегатную функцию на выражение, содержащее совокупность или подзапрос
An exception of type 'System.Data.SqlClient.SqlException' occurred in Microsoft.EntityFrameworkCore.dll but was not handled in user code
и выход
Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler:Error: An exception occurred in the database while iterating the results of a query. System.Data.SqlClient.SqlException: Cannot perform an aggregate function on an expression containing an aggregate or a subquery.
Большое спасибо, это сработало отлично, но у меня все еще есть вопрос, разрешит ли я мне сделать этот тип запроса в запросе, который содержит подзапросы, или это проблема, возникающая из базы данных в том, что она не принимает этот тип запроса. –
As Я упомянул в сообщении, это текущее ограничение/ошибка EF Core/неправильный перевод SQL. Например, EF6 не имеет проблем с переводом таких запросов (и многих других). –
Проблема с этим кодом заключается в том, что он загружает информацию в базу данных, мне, вероятно, придется подождать, пока Microsoft оптимизирует переводы EFCore); –