J'essaie d'obtenir la requête LINQ suivante pour travailler contre la base de données (3.5 SP1):Entity Framework BuildContainsExpression provoque une erreur de fournisseur de données .NET Framework interne 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();
Une fois que j'ajoute Where(LinqTools.BuildContainsExpression<Billing.Customer, int>(u => u.LabelId, labelIds))
je reçois le texte suivant exception:
System.InvalidOperationException: .NET Framework erreur interne du fournisseur de données 1025.
Si je retire Where(LinqTools.BuildContainsExpression<Billing.Customer, int>(u => u.LabelId, labelIds))
tout est bon.
Toute aide sera appréciée.
Merci, Nir.
Ça y est! Merci beaucoup! – nirpi
Oh, votre génie! J'ai ouvert une prime sur une [question similaire] (http://stackoverflow.com/q/11990158/7850) il y a juste une heure, et seulement plus tard j'ai trouvé votre réponse. S'il vous plaît, allez-y et obtenez une prime là-bas. –
Cela semble évident, mais vous avez raison, l'expression doit être construite en dehors de la requête elle-même. –