实体框架查询:对象未设置为对象的实例

时间:2012-06-02 12:38:20

标签: linq entity-framework

调用query.ToList()我得到

  

对象引用未设置为对象的实例

对于x.Gallons,所有订单都设置了此值,它不为空。此外,数据库表中有2个具有适当ID的DProducts。可能有什么不对?

ProductSummaryCollection.Clear();

var query = from p in Repository.repository.ctx.DProduct
            join fo in Repository.repository.ctx.DFuelOrder.Include("DProduct")
            on p.ID equals fo.DProductID
            group fo by fo.DProduct into Prod
            select new DProductSummary
            { 
                Product = fo.DProduct,
                TotalGallons = (float)Prod.Sum(x => x.Gallons)
            };
try
{
    IList<DProductSummary> ps = query.ToList();

    foreach (DProductSummary dps in ps)
        ProductSummaryCollection.Add(dps);
}
catch (Exception exc)
{
}

1 个答案:

答案 0 :(得分:0)

看来你不能做以下两件事:

  1. 在linq查询中创建一个实体对象,DProduct
  2. 即使您包含它,也无法访问linq查询中的引用 所以你必须使用join table.Propery。 一个有效的查询:

        var query = from fo in Repository.repository.ctx.DFuelOrder.Include("DProduct")
                    join p in Repository.repository.ctx.DProduct
                    on fo.DProductID equals p.ID
                    group fo by new { fo.DProductID, p.Name } into Prod
                    select new DProductSummary
                      {
                          ProductName = Prod.Key.Name,
                          TotalGallons = (float)Prod.Sum(x => x.Gallons)
                      };