Linq到子查询的实体查询返回错误
我有一个Linq到实体查询与一个子查询返回一个错误,我希望有人能够帮助我。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))
};
由于提前,
克里斯
试试这个:
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)
};
感谢Alex的回应。但是,我做了更改,发生了同样的错误。 无法创建类型为“SmallBusinessManager.Models.TransactionAllocation”的常量值。在此上下文中仅支持基本类型(如Int32,String和Guid)。 – 2011-05-23 02:52:28
如果你只是'var x = smallBusinessManagerDB.Transaction.ToList()'和'var y = smallBusinessManagerDB.TransactionAllocation.ToList()',会发生什么? – 2011-05-23 02:58:22
x以数据库中的所有记录返回为System.Collection.Generic.List
你为什么不使用关系? – SLaks 2011-05-23 02:31:39
哪些对象或属性的类型为'TransactionAllocation'?它只是'smallBusinessManagerDB.TransactionAllocation'? – 2011-05-23 06:10:05