2011-05-23 142 views
0

我有一个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)) 
}; 

由于提前,

克里斯

+0

你为什么不使用关系? – SLaks 2011-05-23 02:31:39

+0

哪些对象或属性的类型为'TransactionAllocation'?它只是'smallBusinessManagerDB.TransactionAllocation'? – 2011-05-23 06:10:05

回答

0

试试这个:

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) 
    }; 
+0

感谢Alex的回应。但是,我做了更改,发生了同样的错误。 无法创建类型为“SmallBusinessManager.Models.TransactionAllocation”的常量值。在此上下文中仅支持基本类型(如Int32,String和Guid)。 – 2011-05-23 02:52:28

+0

如果你只是'var x = smallBusinessManagerDB.Transaction.ToList()'和'var y = smallBusinessManagerDB.TransactionAllocation.ToList()',会发生什么? – 2011-05-23 02:58:22

+0

x以数据库中的所有记录返回为System.Collection.Generic.List y返回为System.Collection.Generic.List ,其中包含数据库中的所有记录 – 2011-05-23 03:05:15