Хорошо. Я нахожусь в ситуации, когда у меня есть следующие таблицы
Пользователь (UserId ....) UserFavourite (UserId, OtherUserId, AddDate)
Если вы «добавили в избранное» другуюПользователь добавляет строку в userFavourite.Теперь у меня есть ссылочная целостность между столбцами UserId и OtherUserId и таблицей User с двумя ограничениями внешнего ключа.
Мой вопрос: каков наилучший способ доступа к нему через NHibernate?Базовый метод Get <> принимает идентификатор, который является столбцом идентификатора.В этом случае уникальной идентифицирующей характеристикой таблицы является составной ключ UserId и OtherUserId, поэтому я думаю, что мне нужен составной ключ.Я везде читал, что они плохие, и если БД спроектирована правильно, я не должен их использовать.
Поэтому я подумал о том, как еще я мог бы спроектировать БД, и я полагаю, что мог бы иметь
UserFavourite (UniqueID, UserId, OtherUserId, AddDate)
И сделайте UniqueId PK и ID для метода Get и наложите уникальное ограничение на столбцы UserId / OtherUserId.Однако это не решает мою проблему, так как, когда я хочу удалить строку через код или получить ее, мне все равно нужно передать UniqueID, к которому у меня не будет доступа.Я хочу иметь возможность сказать
«Удалить этого пользователя (идентификатор пользователя 142) из избранного».Так что у меня есть доступ только к UserId и вашему собственному UserId, поэтому мне нужно как-то иметь возможность выполнять запрос NHibernate, используя эти два идентификатора, а не уникальный идентификатор.
Может ли кто-нибудь указать мне направлениекак этот случай должен обрабатываться в NHibernate с помощью идеальных методов, чтобы я мог легко и эффективно выполнять эти запросы без использования составных ключей?