Я работаю над приложением отслеживания ошибок.Есть тикеты, и у каждого тикета есть открывающий пользователь и назначенный пользователь.Итак, в основном, у меня есть две сущности, которые имеют два отношения «многие к одному» друг с другом.Вот их схема:
Пользователь:
public class User
{
public virtual int Id { get; protected set; }
...
public virtual IList<Ticket> OpenedTickets { get; set; }
public virtual IList<Ticket> AssignedTickets { get; set; }
}
Билет:
public class Ticket
{
public virtual int Id { get; protected set; }
...
[Required]
public virtual User OpenerUser { get; set; }
public virtual User AssignedUser { get; set; }
}
Я использую функцию автоматического сопоставления FluentNHibernate.
Проблема в том,что независимо от того, какие отношения я установил на стороне пользователя, обе коллекции всегда содержат одни и те же данные.Я полагаю, что Свободный не может определить, к какому концу какого отношения это относится.
Я погуглил, но не нашел ничего полезного.
РЕДАКТИРОВАТЬ 2:
Я с помощью Стивса узнал, что мне нужно реализовать свою собственную IHasManyConvention.Я также обнаружил, что сгенерированное имя столбца в IHasManyConvention должно соответствовать имени столбца, сгенерированного моим IReferenceConvention.С небольшой настройкой я заставил его работать.
Я также шокирующе обнаружил, что вызов удобного метода ForeignKey.EndsWith("Id")
портит все это.
Хотя ответ Стивса сам по себе не решаетпроблема, я очень благодарен за то, что он указал мне правильное направление.