Próbuję uzyskać następujące kwerendy LINQ do pracy z bazą danych (3.5 SP1):Entity Framework BuildContainsExpression Powoduje błąd wewnętrzny Framework dostawcy danych 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();
Gdy dodaję Where(LinqTools.BuildContainsExpression<Billing.Customer, int>(u => u.LabelId, labelIds))
uzyskać następujące wyjątek:
System.InvalidOperationException: błąd wewnętrzny Framework dostawcy danych 1025.
Jeśli usunąć Where(LinqTools.BuildContainsExpression<Billing.Customer, int>(u => u.LabelId, labelIds))
wszystko jest dobrze.
Każda pomoc zostanie doceniona.
Dzięki, Nir.
To prawda! Wielkie dzięki! – nirpi
Och, geniusz! Otworzyłem nagrodę za [podobne pytanie] (http://stackoverflow.com/q/11990158/7850) zaledwie godzinę temu, a dopiero później znalazłem odpowiedź. Idź i zdobądź tam nagrodę. –
To brzmi oczywiste, ale masz rację, wyrażenie musi być zbudowane poza samym zapytaniem. –