0

プレーンなデータベース テーブル (DBFoo という名前) があります。

| PropertyA | PropertyB| PropertyC | PropertyD | PropertyE |

PropertyA、PropertyB、PropertyC はキーの一部です。

そして、このために私のプログラムでは、次のクラス構造を持っています:

public class Foo
{
   public virtual SubFoo SubFoo { get; set; }
   public virtual string PropertyC { get; set; }
   public virtual string PropertyD { get; set; }
   public virtual string PropertyE { get; set; }
}

public class SubFoo
{
   public virtual string PropertyA { get; set; }
   public virtual string PropertyB { get; set; }
}

今、私はマッピングファイルを作成しようとしています:

...
<class name="Foo" table="DBFoo">
   <composite-id>
      // here I Need to define the mapping for the SubFoo properties PropertyA and PropertyB
      <key-property name="PropertyC" column="PropertyC"/>
   </composite-id>
   <property name="PropertyD" column="PropertyD"/>
   <property name="PropertyE" column="PropertyE"/>
</class>
....

PropertyA と PropertyB のキー プロパティを定義する方法を知っている人はいますか?

助けてくれてありがとう

4

2 に答える 2

0

HuorSwordsが述べたように、テーブルの複合キーを定義できます。これを行うには、プロパティを含み、hashkeyとequalsメソッドを上書きする複合キークラスを作成する必要があります...

これを正確に実装する方法の詳細については、このブログをお読みください。

ただし、一般的にいくつかの問題が発生する可能性があるため、複合キーを使用しないことを強くお勧めします。さらに、多かれ少なかれ各テーブルに代理キーを配置し、必要に応じてセカンダリ キー/外部キーを配置することをお勧めします。

これにより、nhibernate マッピングも非常に簡単になります。

于 2013-09-28T17:19:26.523 に答える