Entity Framework .NET BuildContainsExpression Causas de datos interna Marco de error 1025 Proveedor
-
27-09-2019 - |
Pregunta
Estoy tratando de obtener la siguiente consulta LINQ a trabajar en contra de la base de datos (3.5 SP1):
var labelIds = new List<int> { 1, 2 };
var customersAggregatedTransactionsByType =
(from transactions in context.TransactionSet
from customers in context.CustomerSet
.Where(LinqTools.BuildContainsExpression<Billing.Customer, int>(u => u.LabelId, labelIds))
from accounts in context.AccountSet
where customers == accounts.Customer
&& accounts.Id == transactions.Account.Id
&& transactions.DateTime >= fromDate && transactions.DateTime < toDate
group transactions.Amount
by new
{
UserAccountId = transactions.Account.Id,
TransactionTypeId = transactions.TransactionTypeId,
BaseAssetId = accounts.BaseAssetId
} into customerTransactions
select customerTransactions).ToList();
Una vez que agrego Where(LinqTools.BuildContainsExpression<Billing.Customer, int>(u => u.LabelId, labelIds))
consigo la siguiente excepción:
System.InvalidOperationException:. Error del proveedor de datos .NET interna Marco 1025
Si quito buena Where(LinqTools.BuildContainsExpression<Billing.Customer, int>(u => u.LabelId, labelIds))
de todos.
Se apreciará Cualquier ayuda.
Gracias, Nir.
Solución
Trate:
var labelIds = new List<int> { 1, 2 };
var exp = LinqTools.BuildContainsExpression<Billing.Customer, int>(u => u.LabelId, labelIds);
var customersAggregatedTransactionsByType =
(from transactions in context.TransactionSet
from customers in context.CustomerSet.Where(exp)
from accounts in context.AccountSet
where customers == accounts.Customer
&& accounts.Id == transactions.Account.Id
&& transactions.DateTime >= fromDate && transactions.DateTime < toDate
group transactions.Amount
by new
{
UserAccountId = transactions.Account.Id,
TransactionTypeId = transactions.TransactionTypeId,
BaseAssetId = accounts.BaseAssetId
} into customerTransactions
select customerTransactions).ToList();
Se desea que el resultado en la consulta, no la llamada a LinqTools.BuildContainsExpression
sí mismo.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow