Linq для проекции NHibernate на анон. type приводит к загадочной ошибке приведения

У меня есть объект TaxWork, который сохраняется с помощью NHibernate. Эта сущность имеет следующие свойства (среди прочего):

public virtual TaxWorkType Type { get; set; } //Kctc.TaxWorkType is an enumeration
public virtual TaxWorkStatus Status { get; set; } //Kctc.TaxWorkStatus is an enumeration
public virtual LegalWorkPriority Priority { get; set; } //Kctc.LegalWorkType is an enumeration
public virtual User Handler { get; set; } //Kctc.BusinessLayer.Entities.User is another entity
public virtual int? CaseNumber { get; set; }

Я использую Linq to NHibernate для извлечения подмножества объектов налоговой работы следующим образом (taxWorkRepository.All, очевидно, возвращает IQueryable):

foreach (TaxWork taxWork in taxWorkRepository.All.Where(x => x.CaseNumber == _caseNumber).OrderBy(x => x.DateCreated))
{
    ...
}

Это прекрасно работает. Я хочу использовать проекцию, чтобы запрашивать только те столбцы, которые необходимы в этом случае. Я использую следующий код:

foreach (var taxWorkFragment in taxWorkRepository.All.Where(x => x.CaseNumber == _caseNumber).OrderBy(x => x.DateCreated).Select(x => new { Type = x.Type, DateCreated = x.DateCreated, Handler = x.Handler, Status = x.Status, Priority = x.Priority }))
{
    ...
}

Однако при попытке создать анонимный тип я получаю следующую ошибку:

Недопустимое преобразование из «Kctc.TaxWorkStatus» в «Kctc.BusinessLayer.Entities.User».

С чего это взялась идея, что он должен передавать пользователю TaxWorkStatus?

Любые предложения, что может быть не так?


person David    schedule 03.09.2010    source источник


Ответы (1)


Попробуйте сделать так:

foreach (var taxWorkFragment in taxWorkRepository.All.Where(x => x.CaseNumber == _caseNumber).OrderBy(x => x.DateCreated)
.Select(x => new TaxWork { Type = x.Type, DateCreated = x.DateCreated, Handler = x.Handler, Status = x.Status, Priority = x.Priority }))
{
...
}

Это должно помочь

person EvgeniyK    schedule 15.07.2011