Линк в NHibernate проекция на анон.тип приводит к мистификации ошибки приведения - PullRequest
0 голосов
/ 03 сентября 2010

У меня есть объект 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 для 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 пользователю?

Есть ли какие-либо предположения о том, что может пойти не так?

1 Ответ

0 голосов
/ 15 июля 2011

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

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 }))
{
...
}

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

...