nHibernate многие-ко-многим с мета-значением - PullRequest
0 голосов
/ 02 мая 2011

У меня есть три сущности в моей музыкальной БД: Видео , Альбом и Жанр . И видео, и альбомы могут иметь несколько жанров, поэтому я пытаюсь связать их с ассоциацией многие ко многим . Что у меня в БД:

Videos:
   Id (int)
   ... (many other columns)

Albums:
   Id (int)
   ... (many other columns)

Genre:
   Id (int)
   Name (string)

Item_Genres: (table we are mapping many-to-many with)
   Id (int)
   objectType (here I have "album" for albums and "video" for videos)
   objectId (id from either Albums or Videos table)
   genreId (Id of the appropriate genre)

Я могу сопоставить Жанр с Видео и Альбомы , используя многие-к-любому, но мне нужно получить все жанры для конкретного видео. Как я могу это сделать?

На данный момент у меня есть это в Видео Отображение:

    <set name="Genres" table="item_genres" lazy="true">
        <key>
            <column name="objectId" not-null="true"/>
        </key>
        <many-to-many class="Repositories.Entities.Genre">
            <column name="genreId" not-null="true"/>
        </many-to-many>
    </set> 

и при запросе video.Genres У меня есть жанры для этого видео и для альбома с одинаковым идентификатором.

1 Ответ

1 голос
/ 02 мая 2011

Вы можете попытаться определить свое видео-отображение следующим образом:

<set name="Genres" table="item_genres" lazy="true" where="objectType = 'video'">
    <key>
        <column name="objectId" not-null="true"/>
    </key>
    <many-to-many class="Repositories.Entities.Genre">
        <column name="genreId" not-null="true"/>
    </many-to-many>
</set> 

Параметр where = "objectType = 'video' должен обеспечивать получение только видео, а не альбомов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...