0

既存のスキーマにマップする必要があり、nhibernateでマップしたいと思います。

エンティティ/テーブルスキーマ:

post {
  pk_id
  prod_id
  prod_internid
  title
}

tag {
  pk_t_id
  prod_id
  prod_internid
  name
}

投稿には複数のタグを含めることができ、タグから投稿テーブルへの外部キー制約には、prod_idとprod_internidの2つの列があります。

私はこれを試しました:

PostMap {
  // tags is a list
  HasMany(x => x.tags).KeyColumns.Add("prod_id", "prod_internid");
}

TagMap {
  References(x => x.post).Columns("prod_id", "prod_internid");//.ForeignKey();
}

このエラーが発生します:

NHibernate.FKUnmatchingColumnsException: Foreign key (FK98806C8630C05A78:tag [prod_id, prod_internid])) must have same number of columns as the referenced primary key (post [pk_id])

どうすれば正しい方法でマッピングできますか?

4

1 に答える 1

1

この機能は現在 NHibernate ではサポートされていないと思いますが、Hibernate ではサポートされています。あなたまたは誰かがそれを移植する必要があるようです。このNHの問題を見てください:

https://nhibernate.jira.com/browse/NH-1722

これに関する以前の StackOverflow の記事も見つけました。

複数の列を持つ多対一

于 2012-09-17T19:16:20.257 に答える