Estoy tratando de obtener la siguiente consulta LINQ a trabajar en contra de la base de datos (3.5 SP1):Entity Framework .NET BuildContainsExpression Causas de datos interna Marco de error Proveedor 1025
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 añado Where(LinqTools.BuildContainsExpression<Billing.Customer, int>(u => u.LabelId, labelIds))
me sale el siguiente excepción:
System.InvalidOperationException: error del proveedor de datos .NET interna Marco 1025.
Si quito Where(LinqTools.BuildContainsExpression<Billing.Customer, int>(u => u.LabelId, labelIds))
todo está bien.
Cualquier ayuda será apreciada.
Gracias, Nir.
¡Eso lo hace! ¡Muchas gracias! – nirpi
¡Oh, genio! Abrí una recompensa por una [pregunta similar] (http://stackoverflow.com/q/11990158/7850) hace solo una hora, y solo después encontré tu respuesta. Por favor, ve y consigue una recompensa por allí. –
Parece obvio, pero tiene razón, la expresión debe construirse fuera de la consulta en sí. –