Linq, ошибка простого фильтра ... C # - PullRequest
1 голос
/ 28 октября 2010

Использование 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>(); 

ОШИБКА: объект или сложный тип Model.DocumentoDTO не может быть создан взапрос LINQ to Entities.

 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 Ответ

1 голос
/ 28 октября 2010

DocumentoDTO не является классом Entity Framework, поэтому вы не можете выбрать тип DocumentoDTO. Сначала вам нужно выполнить запрос, вызвав query.ToList() только с использованием классов Entity Framework. После этого вы можете выбрать 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 
                                       });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...