Windows 7 で Informix を NHibernate と連携させようとしています。現在、informix で正常に動作する接続文字列があります。
データベース=db;サーバー=サーバー:ポート;uid=ユーザー名;パスワード=パスワード;プーリング=false
IBM.Data.Informix .NET プロバイダー バージョン 9.0.0.2 を使用しています。
実行中の Informix サーバーでこのプロバイダーを使用すると、さまざまなアプリケーションが正常に動作します。
nhibernate アプリケーションは現在、informix サーバーに接続していますが、問題はそれが生成する SQL の形式です。
私のnhibernateコードがこのように見える場合、
using (ISession session = Config.SessionFactory.OpenSession())
{
return session
.CreateCriteria<DBTable>()
.Add(Restrictions.Eq("FieldValue", true))
.List<DBTable>();
}
私は Informix を初めて使用しますが、間違っていなければ、正しい SQL は次のようになります。
select * from DBTable where fieldValue = 'T'
しかし代わりに、それが生成する SQL は、
select * from DBTable where fieldValue = True
これは機能していません。このようなものをnhibernate構成ファイルに追加しようとしましたが、
<property name="query.substitutions">True=T,False=F</property>
<property name="query.substitutions">True 'T',False 'F'</property>
<property name="query.substitutions">True='T',False='F'</property>
<property name="query.substitutions">True T,False F</property>
しかし、それはうまくいかないようです。query.substitutions の使用方法に関する一貫したドキュメントを見つけることができませんでした。また、使用しているデータベースの種類によって異なるようです。