【问题标题】:EF4 POCO, how i can filterByXX?EF4 POCO,我如何过滤ByXX?
【发布时间】:2010-10-29 11:54:08
【问题描述】:

我正在使用这个查询:

     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 集合?

【问题讨论】:

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


    【解决方案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
                                   });
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-06
        • 1970-01-01
        • 2011-05-09
        相关资源
        最近更新 更多