Я бы смоделировал это следующим образом:
Detail (table)
- DetailId (col), PK
- ContentId (col), FK to Content table
- Name (col)
Tag (table)
- TagId, PK
- Other tag columns
TagDetail (table), only 1 row per Detail
- TagDetailId (col), PK
- DetailId (col), FK to Detail table
- TagId, FK to Tag table
TagCollectionDetail (table), there would be many rows of this per Detail
- TagCollectionDetailId, PK
- DetailId (col), FK to Detail table
- TagId, FK to Tag table
PK = первичный ключ, FK = внешний ключ.Я бы установил эти столбцы в число / целочисленный тип, который автоматически увеличивается.NHibernate не очень хорошо работает (или вообще может быть) с таблицами без первичных ключей.
Думая об этом еще больше, я не понимаю, почему у вас есть TagDetail и TagCollectionDetail.TagDetail - это особый случай TagCollectionDetail, где есть только 1 тег.Я думаю, что вы можете избавиться от TagDetail.