2016-09-29 4 views
2

に句の間で使用します。 sqlを直接実行すると、2つの日付の間にすべてのレコードが正常に返されます。即ちNHibernateはLINQのは、私は、フィールド<strong>VarCharDate</strong>が間のユーザ入力日付で<strong>ENTITY</strong>からレコードを読みたいのIQueryable

SELECT * FROM ENTITY WHERE VarCharDate BETWEEN '2010-09-01' AND '2012-08-01' 

ここVarCharDateフィールドが事前に定義されたタイプVARCHARであり、Iは、日時に変更することができません。 日付形式は、このフィールドに値を格納する場合は'YYYY-MM-DD'に固定されています。

問題:

編集:私はマッピングエンティティのFluentNhibernateを使用しています 。また、私は構成によるアプリケーションの起動時にスキーマを構築します。

私はC#アプリケーションでレコードを取得するためにNhibernate Linqを使用しています。ランタイムエラーの非サポート例外における文の結果の上に実行

session.Query<ENTITY>() 
      .Where(e=> 
       Convert.ToDateTime(e.VarCharDate) >= Convert.ToDateTime(loInputDateString) && 
       Convert.ToDateTime(e.VarCharDate) <= Convert.ToDateTime(hiInputDateString) 
      ).ToList(); 

: は、私のようなものを試してみました。

GoogleはExtensionMethodsに関する結果を表示していますが、混乱しているため、まだ実装できませんでした。

私のような何かを達成できる方法:

session.Query<ENTITY>(e=> e.VarCharDate.Between(loInputDateString,hiInputDateString)).ToList(); 

は、私もリンク LINQ Between Operator

で述べた何かをしようとしたが、それはしかし働いていません。

答えて

0

エンティティのマッピング方法(HBM、FluentNHibernate、...)は記載されていません。しかし、TypeConverterを使うことができます。あなたのクラスのVarCharDateプロパティの定義を変更することが可能な場合は、それをDateTimeに変更して、NHibernateがそれを文字列からDateTimeに変換して戻すようにします。

+0

こんにちはRabban、私はエンティティをマッピングするためにFluentNhibernateを使用していることを言いたいと思う質問を更新しました。 – Shikha

+0

TypeConverterで試してみましたか、Between拡張機能を使いたいですか?プロパティ(フィールドではない)をDateTimeに変更することはできますか? – Rabban

関連する問題