L'entité ou de type complexe ne peuvent pas être construits en une requête LINQ to entities
En ligne sur notre application de facturation, de nous donner un récapitulatif de facturation de ce qui facture le client les a reçus et les paiements qu'ils ont fait.
Dans l'ordre pour que cela fonctionne, je dois d'abord tirer les paiements puis les faire correspondre à la facture. Donc, je dois faire quelque chose comme:
foreach (BillPaymentSummary payment in billPayments)
{
DateTime dt = payment.DueDate;
//Debug errors on this next line
var summary = (from a in db.BillHistories
where a.CustomerId == customerNumber && a.DueDate == dt && a.Type == "BILL"
select new BillSummary
{
Id = a.Id,
CustomerId = a.CustomerId,
DueDate = a.DueDate,
PreviousBalance = a.PreviousBalance.Value,
TotalBill = a.TotalBill.Value,
Type = a.Type,
IsFinalBill = a.IsFinalBill
}).SingleOrDefault();
if (summary != null)
{
summary.PayDate = payment.PaidDate;
summary.AmountPaid = payment.AmountPaid;
returnSummaries.Add(summary);
}
else
{
summary = (from a in db.BillHistories
where a.CustomerId == customerNumber && a.DueDate == payment.DueDate && a.Type == "ADJ "
select new BillSummary
{
Id = a.Id,
CustomerId = a.CustomerId,
DueDate = a.DueDate,
PreviousBalance = a.PreviousBalance.Value,
TotalBill = a.TotalBill.Value,
Type = a.Type,
IsFinalBill = a.IsFinalBill
}).SingleOrDefault();
if (summary != null)
{
summary.PayDate = payment.PaidDate;
summary.AmountPaid = payment.AmountPaid;
returnSummaries.Add(summary);
}
}
}
J'ai été jouer avec cela, mais peu importe ce que je fais, je reçois le message d'erreur suivant:
L'entité ou de complexes de type 'UtilityBill.Domaine.Le béton.BillSummary " ne peuvent pas être construits en une requête LINQ to entities.
Est-ce parce que je suis en cours d'exécution des requêtes dans les requêtes? Comment puis-je obtenir autour de cette erreur?
J'ai essayé de chercher sur Google pour une réponse et voir beaucoup de réponses, mais aucun d'entre eux semblent expliquer mon problème.
OriginalL'auteur Mike Wills | 2011-12-12
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas projeter sur le mapping de l'entité. Vous devez appeler
ToList()
avant de faire votre cartographie.Ou, mieux encore, passez à la suivante (l'appel de FirstOrDefault va exécuter la requête et de vous permettre de remplir votre objet):
De vous détacher de Entity Framework, vous pouvez également envisager d'utiliser un autre modèle de classe pour retourner à la place du modèle d'Entity Framework.
merci pour la rep! Je pense que je n'ai point de ce qui n'allait pas avec votre code et comment bien fixer.
j'ai supprimé mon montage qui a indiqué que l'appel de
Where
et puisFirstOrDefault
serait la cause supplémentaire SQL être généré que cela ne semble pas être le cas. C'était peut être un problème dans une version antérieure, parce que j'ai été la suite de cette règle pour assez un certain temps...ou peut-être que c'était juste de la désinformation.OriginalL'auteur Craig
Ce que j'ai fait était de:
OriginalL'auteur Mike Wills