NH とレガシー データベースとのマッピング関係の問題に直面しています。
私たちは2つのテーブルを持っています
Table1 [
Id primary Key (sql identity)
Cod1,
Cod2 ]
次に、2 番目のテーブル
Table2 [
CompositeCode primary key (assigned),
Cod1,
Cod2 ]
CompositeCode は、Cod1 + Cod2 の計算フィールドであり、テーブルのキーです。
この方法で、Table1 と Table2 の間の読み取り専用の多対 1 の関係をマップしようとしています
<class name="Table2" >
<id name="Id" >
<generator class="identity" />
</id>
<many-to-one name="Table2"
formula="SELECT C.CompositeCode FROM Table2 C WHERE C.Cod1= Cod1 AND C.Cod2 = Cod2"/>
<property name="Cod1" />
<property name="Cod2" />
</class>
データベースにアクセスすると、NHibernate から次のエラーが表示されます。
'Incorrect syntax near the keyword 'SELECT'.
これは生成されたSQLです
SELECT TOP (100) this_.Id as Id1_37_0_,
this_.Cod1 as Cod1l3_37_0_,
this_.Cod2 as Cod24_37_0_,
SELECT this_.CompositeCode FROM Table2 C WHERE this_.Cod1 = C.OCd1 AND this_.Cod2 = C.COd2 as formula0_0_
FROM Table1 this_
どうしたの?
また、形式を次のように変更しようとしました
formula="SELECT C.CompositeCode FROM Table2 C WHERE C.CompositeCode = Cod1 + Cod2"
しかし、運が悪い!
PS NH はバージョン 3.1 です