#c# #linq-to-sql #linq-to-entities
#c# #linq-to-sql #linq-to-entities
Вопрос:
У меня есть запрос Linq к сущности с подзапросом, который возвращает ошибку, с которой, я надеюсь, кто-нибудь сможет мне помочь.
Сообщение об ошибке:
"Unable to create a constant value of type 'SmallBusinessManager.Models.TransactionAllocation'. Only primitive types ('such as Int32, String, and Guid') are supported in this context."
Запрос Linq:
var query = from transactionSelect in smallBusinessManagerDB.Transaction
select new
{
TransactionId = transactionSelect.TransactionId,
TransactionNumber = transactionSelect.TransactionNumber,
Amount = transactionSelect.Amount,
Balance = (from t2 in smallBusinessManagerDB.TransactionAllocation
where t2.InvoiceTransactionId == transactionSelect.TransactionId
group t2 by t2.TransactionAllocationId into g
select g.Sum(p => p.AllocatedAmount))
};
Заранее спасибо,
Крис
Комментарии:
1. Почему бы вам не использовать отношение?
2. Какие объекты или свойства относятся к типу
TransactionAllocation
? Это всего лишьsmallBusinessManagerDB.TransactionAllocation
?
Ответ №1:
Попробуйте это:
var query =
from transactionSelect in smallBusinessManagerDB.Transaction
select new
{
TransactionId = transactionSelect.TransactionId,
TransactionNumber = transactionSelect.TransactionNumber,
Amount = transactionSelect.Amount,
Balance = smallBusinessManagerDB.TransactionAllocation
.Where(t2 => t2.InvoiceTransactionId == transactionSelect.TransactionId)
.Sum(p => p.AllocatedAmount)
};
Комментарии:
1. Спасибо за ответ, Алекс. Я внес изменения, однако произошла та же ошибка. Не удается создать постоянное значение типа ‘SmallBusinessManager. Модели. TransactionAllocation’. В этом контексте поддерживаются только примитивные типы (‘такие как Int32, String и Guid’).
2. Что произойдет, если вы сделаете просто
var x = smallBusinessManagerDB.Transaction.ToList()
иvar y = smallBusinessManagerDB.TransactionAllocation.ToList()
?3. x возвращается как System. Коллекция. Generic.List<SmallBusinessManager. Модели. Транзакция> со всеми записями в базе данных y возвращается как System. Коллекция. Generic.List<SmallBusinessManager. Модели. TransactionAllocation> со всеми записями в базе данных
4. @Chris Nieu — можете ли вы взять мой запрос, прокомментировать установщик баланса и проверить, работает ли он? (Пытаюсь локализовать эту проблему)