EF4 POCO,我怎么能过滤掉BYXX?

时间:2010-10-29 11:54:08

标签: c# linq-to-entities entity-framework-4 poco

我正在使用此查询:

     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>(); 
     }

我收到此错误:

错误:无法在LINQ to Entities查询中构造实体或复杂类型“Model.DocumentoDTO”。

我正在使用poco,如何在没有所有字段的情况下返回我的pocos集合?

2 个答案:

答案 0 :(得分:1)

您需要返回不是映射实体的POCO。这可能是“真正的”POCO或匿名类型。但它不能是映射的实体。

答案 1 :(得分:1)

您需要在AsEnumerable之前应用Select才能实现此目的。否则,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
                               });