単純なSELECTステートメントを実行する次のコードがあります。 "SQL Not Available"エラーが発生すると、このクエリは失敗します。 パターンと同じコードは、約20種類のモデルでうまく機能します。 実際には、SQLで実装されたビューのデザインを変更して、LoadID列を非表示にすると、クエリが失敗することがあります。実行可能... LoadIDが存在しないため。nHibernate SQLが利用できないエラー
このコード、のhbm.xmlモデル、およびビューのデザインはすべてses.Queryを(整列されている)は、これがマッピングされ、 "SQL利用できません"
var rows = ses.Query<vInventory>().Where(c => c.CustomerRecid == recid).Select(c => new vInventory()
{
InventoryRecid = c.InventoryRecid
, ItemID = c.ItemID
, LoadID = c.LoadID
, CustomerRecid = c.CustomerRecid
}).ToList();
を記載した。
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true" assembly="Asmbly" namespace="Asmbly.Models">
<class name ="vInventory" table="dbo.vInventory" dynamic-update="true">
<cache usage="read-only"/>
<id name="InventoryRecid" column="InventoryRecid" type="Int64">
<generator class="native" />
</id>
<property name="ItemID" />
<property name="LoadID" />
<property name="CustomerRecid" />
</class>
</hibernate-mapping>
更新に失敗しました。私はSQLビューの出力を取り出し、それをテーブルにダンプしました。 その後、テーブルを指すようにhbm.xlmを変更しました。 これでses.Query()が正常に動作します。これは実行可能な可能性ではありません。
InventoryRecidにコメントしてください。 SQLビューでは、この属性は
ROW_NUMBER() over (...)
は、どのように私はNHibernateは、このビューを使用してInventoryRecid属性を利用するために取得することができますか? 私はこのエンティティへの更新を試みることはありません。
更新#2: 私は
<class name ="vInventory" table="dbo.vInventory" dynamic-update="false">
再コンパイルし、私の問題がなくなっているに
<class name ="vInventory" table="dbo.vInventory" dynamic-update="true">
からhbm.xlmマッピングを変更しました。
残念ながら、私はそれをtrueに戻して再コンパイルして、問題は戻ってこない。
あなたの意見を見せてください。 – epitka
3つの異なるシステムを統合したCPEです。それは500行以上です。私はそれを効果的に行うことはできません。 – Steve