2010-10-29 34 views
2

我使用此查詢:EF4 POCO,我怎麼能過濾BXXX?

 public IEnumerable.....{ 
     var query = from d in Context.Documentos 
     where d.CodigoEquipamento == documentoDTO.CodigoEquipamento && 
     d.Codigo == tipoEquipamentoDTO.Codigo 
     select new DocumentoDTO 
     { 
      Codigo = d.Codigo, 
      CodigoEquipamento = d.CodigoEquipamento 
     } 
     return query.AsEnumerable < DocumentoDTO>(); 
    } 

和我得到這個錯誤:

錯誤:實體或複雜類型「Model.DocumentoDTO」不能在LINQ到實體查詢構造。

我正在使用poco,我怎樣才能返回一個沒有所有字段的pocos集合?

回答

1

您必須在Select之前應用AsEnumerable才能生效。否則,EF會嘗試將您的查詢轉換爲SQL,而DocumentoDTO不是實體 - 因此是錯誤。

Context.Documentos.Where(d => d.CodigoEquipamento == documentoDTO.CodigoEquipamento && 
           d.Codigo == tipoEquipamentoDTO.Codigo). 
        AsEnumerable(). 
        Select(d => new DocumentoDTO 
           { 
            Codigo = d.Codigo, 
            CodigoEquipamento = d.CodigoEquipamento 
           }); 
1

您需要返回一個不是映射實體的POCO。這可能是一個「真正的」POCO或匿名類型。但它不能是一個映射的實體。