0

誰かが私を正しい方向に向けることができるかどうか疑問に思います。

現在、SQLServerデータベースに次の3つのテーブルがあります

パラメータParameterIdParameterName

ParameterValue ParameterValueId ParameterValue

ParameterParameterValue ParameterId ParameterValueId

ParameterドメインオブジェクトがすべてのParameterValueオブジェクトもフェッチする場所を取得しようとしています(パラメーターは複数の値を持つことができるため、ParameterはParameterValueと1対多の関係にあると思います)が、どこにも行きません-私が達成したmsotは、すべてではなく、最初の値をフェッチしています:(

誰かが助けてくれるか、私が使用しているコードやマッピングを投稿できるものがあれば、いつものように、どんな助けでも大歓迎です:)

パラメータのマッピング

<?xml version="1.0" encoding="utf-8" ?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
               namespace="StockMarketAdvisorDatabaseAccess.Domain" 
               assembly="StockMarketAdvisorDatabaseAccess">
<class name="Parameter" table="Parameter">
        <id name="ParameterId">
            <column name="ParameterId" sql-type="int" not-null="true" />
            <generator class="identity" />
        </id>
        <property name="ParameterName" />
        <bag name="ParameterValues" table="ParameterParameterValue" cascade="none">
            <key column="ParameterValueId" />
            <one-to-many class="ParameterValue" />
        </bag>
    </class>
</hibernate-mapping>

ParameterValueのマッピング

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
                   namespace="StockMarketAdvisorDatabaseAccess.Domain" 
                   assembly="StockMarketAdvisorDatabaseAccess">
    <class name="ParameterValue" table="ParameterValue">
        <id name="ParameterValueId">
            <column name="ParameterValueId" sql-type="int" not-null="true" />
            <generator class="identity" />
        </id>
        <property name="Value" column="ParameterValue"/>
     </class>
</hibernate-mapping>

もう一度ありがとう、nHibernateを使い始めたばかりなので、それでもほとんどを理解しようとしています!:)

4

1 に答える 1

1

あなたの問題は、あなたが1つのこと(1-多)を記述しているが、あなたのテーブル構造は別のもの(多-多)であるということです

パラメータごとに多くの値が必要な場合は、テーブル構造を次のように単純化する必要があります。

パラメータ
-------------
*ParameterId
ParameterName


ParameterValue
--------------------
* ParameterValueId
ParameterId
ParameterValue

次に、マッピングで1対多のマッピングを使用できます。

<class name="Parameter" table="Parameter">
    <id name="ParameterId">
        <column name="ParameterId" sql-type="int" not-null="true" />
        <generator class="identity" />
    </id>
    <property name="ParameterName" />
    <bag name="ParameterValues" table="ParameterValue" cascade="none">
        <key column="ParameterId" />
        <one-to-many class="ParameterValue" />
    </bag>
</class>
于 2012-11-26T21:52:59.520 に答える