2011-01-18 4 views
1

休止状態はNHibernate 2.1で動作していました。今ではNHibernate 3でそれはしません。 私は休閑マッピングを持つ列種類、と表があります。私は、LINQのNHibernate Linq .Where(x => x.Kind ==(byte)criteria.Value)は動作しません。

.Where(X => x.Kind ==(バイト)の基準をどうしようとすると、今

を.VALUE)

criteria.Valueがバイト値であり、私はInvalidCastExceptionが取得:(クエリ を実行することができませんでした[...]を選択しますProjectTypeからprojecttyp0_.NameのASCによってprojecttyp0_どこprojecttyp0_.Kind =オーダー?] 名前:p1 - 値:0)--->

bei NHibernate.Type.ByteType.Set(IDbCommand cmd、Object value、Int32 index)d:¥CSharp¥NH¥nhibernate¥src¥NHibernate¥Type¥ByteType.cs:Zeile 44. bei NHibernate.Type。 d:\ CSharp \ NH \ nhibernate \ src \ NHibernate \ Type \ NullableType.csのNullableType.NullSafeSet(IDbCommand cmd、オブジェクト値、Int32インデックス):Zeile 180.bei NHibernate.Type.NullableType.NullSafeSet(IDbCommand st、Object Hibernate \ Type \ NullableType.cs:Zeile 139. bei NHibernate.Engine.QueryParameters.BindParameters(IDbCommandコマンド、Int32開始、ISessionImplementorセッション) d:¥CSharp¥NH¥nhibernate¥src¥NHibernate¥Engine¥QueryParameters.cs:Zeile 638.

sometを変更する必要がありますかヒンジ?

ありがとうございました。

よろしく、トーマス

答えて

2

(byte)criteria.Valueを交換

てみてください私はほとんど同じ問題を抱えていた:System.InvalidCastExceptionの:指定されたキャストは有効ではありません。

私のPOCOプロパティは、タイプ:バイトですか? 私のMS SQL 2005の列は次のようなタイプでした:tinyint NULL

プロパティでNHibernateにLINQを使用してクエリを実行するたびに、System.InvalidCastExceptionがスローされました。 Criteria APIは正常に機能しました。

私はintへのバイトをキャストMS LINQのコードにバグがある、

https://nhibernate.jira.com/browse/NH-2789

どうやらNHプロジェクト/ wのバグを提出することになりました。

私の回避策は、POCOプロパティで型(int?)を使用するが、TINYINTはデータベース型として保持することでした。

例では、criteria.Valueはバイトではなくint型になります。これにより、MS LINQのバグが回避されます。

0

は何種類criteria.Valueているのですか? Convert.ToByte(criteria.Value)

+0

Hi Diego - criteria.Valueはバイト型です。私はまたConvertを試みました。ToByte(criteria.Value)。それはまた動作しません。 – BennoDual

+0

私はQueryOver()を使用すると、 – BennoDual

0

@ cylindgによって提出されたバグはresolved with version 3.3.xでした。私はバージョン3.2でこの問題を抱えており、3.3へのアップグレードがこの問題を解決したことを確認しました。

関連する問題