2011-11-08 13 views

答えて

0

私のNH 3.2はSelectの入力から値を取得しようとすると、より簡単なクエリでは実際にはMismatchedTreeNodeExceptionで失敗します。どのバージョンを使用していますか?

とにかく、投影(Select)でクエリの外からの値を使用できないように見えます。これはおそらくNHibernateのLinqの制限です。あなたのバージョンは、コンパイルされた式をSelectからキャッシュしているようですが、変数に依存しているという事実は無視しています。 DateTimeの値はすべての呼び出しで同じですが、そうではありませんか?私はもう少し慎重に見てきたし、実際、すでに知られている、NHibernateのバグである

.Select(g => new 
{ 
    Year = g.Key.Year, 
    Month = g.Key.Month, 
    TotalPageCount = g.Count(), 
    PublicPageCount = g.Count(p => p.State == PageState.Public && p.Published <= DateTime.UtcNow) 
}) 
.AsEnumerable() 
.Select(g => new Archive 
{ 
    ContextPageId = rootPage.Id, 
    Year = g.Year, 
    Month = g.Month, 
    TotalPageCount = g.TotalPageCount, 
    PublicPageCount = g.PublicPageCount 
}) 
.ToList(); 

EDIT

ビットクリーナーこの問題を回避するには、次のように行くことができます。 this blog postおよびthis JIRA bug entryを参照してください。

+0

NH版はナゲット経由でインストールされた3.2.0.4000と思われます。私はDateTimeの部分もチェックしなければならないと思います。 –

+0

OK - NHibernateの既知のバグです。私の編集を参照してください。 – NOtherDev

関連する問題