2010-10-29 49 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或匿名类型。但它不能是一个映射的实体。