У меня есть мое заявление:
- У меня есть класс Продукт
- У меня есть пользователь отслеживания этого продукта, поэтому класс Отслеживание
Обратите внимание, что несколько пользователей могут отслеживать один продукт, поэтому соотношение между Продуктом: Отслеживание составляет 1: n
Однако, если пользователь в данный момент вошел в систему, это может быть только 1 Трек, связанный с продуктом, и на моей странице списка я должен отобразить список продуктов с его статусом трека для текущего пользователя, что-то как:
- Продукт A - Отслеживается 2011-01-01
- Продукт B - Не отслеживается
- Продукт C - Отслеживается 2010-12-20
- ...
Таким образом, в простом sql у меня может быть такой запрос:
select * from Product as p
left outer join Track as t
on t.ProductId = p.Id and t.UserId = {currentUser.Id}
Но используя NHibernate, я нахожу это нелегко реализовать, в настоящее время у меня есть класс ProductWithTrack , который наследуется от класса Product и добавляет свойство Track :
class ProductWithTrack : Product {
public Track Track { get; set; }
}
Я стараюсь сопоставить этот класс с таблицей Product точно так же, как класс Product , но как мне определить отображение свойства Track , я пробовал:
- один ко многим, но Трек - это не коллекция
- многие-к-одному / один-к-одному, для этого требуется столбец внешнего ключа в таблице Product, которого, конечно, не существует
Пожалуйста, помогите с этой проблемой сопоставления, спасибо.