0

NHibernate を使用して永続化される TaxWork エンティティがあります。このエンティティには、(特に) 次のプロパティがあります。

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 をユーザーにキャストする必要があるという考えは、いったいどこから得ているのでしょうか。

何がうまくいかないのか、何か提案はありますか?

4

1 に答える 1

0

このようにしてみてください:

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

それは役立つはずです

于 2011-07-15T07:45:55.267 に答える