Linq,简单的过滤错误...... C#

时间:2010-10-28 18:41:28

标签: c# linq linq-to-entities

使用linq和silverlight出现此错误....我正在使用POCO .... DTO = 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”。

 public class TipoEquipamentoDTO
{
    [Key]
    public virtual int Codigo { get; set; }
    public virtual string Tipo { get; set; }
    public virtual string UsuarioInclusao { get; set; }
    public virtual DateTime DataHoraInclusao { get; set; }
    public virtual string UsuarioAlteracao { get; set; }
    public virtual DateTime DataHoraAlteracao { get; set; }
    public ICollection<DocumentoDTO> DocumentoDTO { get; set; }
}

public class DocumentoDTO
{
    [Key]
    public virtual int Codigo { get; set; }
    public virtual int CodigoTipo { get; set; }
    public virtual int CodigoEquipamento { get; set; }
    public virtual byte[] Documento { get; set; }
    public virtual string Nome { get; set; }
    public virtual string UsuarioInclusao { get; set; }
    public virtual DateTime DataHoraInclusao { get; set; }
    public virtual string UsuarioAlteracao { get; set; }
    public virtual DateTime DataHoraAlteracao { get; set; }
    public TipoEquipamentoDTO TipoEquipamentoDTO { get; set; }

}

1 个答案:

答案 0 :(得分:1)

DocumentoDTO不是实体框架类,因此您无法选择DocumentoDTO类型。您必须首先通过仅使用Entity Framework类调用query.ToList()来执行查询。之后,您可以选择DocumentoDTO

 public IEnumerable.....

var query = from d in Context.Documentos
            where d.CodigoEquipamento == documentoDTO.CodigoEquipamento &&
            d.Codigo == tipoEquipamentoDTO.Codigo 
            select new Documento { // Documento is in the context
               Codigo =d.Codigo, 
               CodigoEquipamento = d.CodigoEquipamento 
            });

 return query.ToList().Select(d => new DocumentoDTO 
                                       {
                                         Codigo = d.Codigo,
                                         CodigoEquipamento = d.CodigoEquipamento 
                                       });