У меня есть класс, который выглядит следующим образом:Как сопоставить два объекта, которые ссылаются друг на друга в NHibernate?
public class Job
{
public Company Company {get;set;}
public Job JobForCompanyA {get;set;}
public Job JobForCompanyB {get;set;}
}
The рабочие места для двух компаний будут ссылаться друг на друга, например:
var jobA = new Job { Company = Company.CompanyA };
var jobB = new Job { Company = Company.CompabyB };
jobA.JobForCompanyB = jobB;
jobB.JobForCompanyA = jobA;
Проблема с этим состоит в том, что если я карте их как нормальные многие-к-одному в NHibernate, они не могут их сохранить ... так как каждый объект Job ссылается на другой, вам придется сохранить его, чтобы получить PK, но вы не можете, потому что он ссылается на другой (несохраненный) Job, так что у вас есть проблема с курицей и яйцом.
С точки зрения db я мог бы составить таблицу сопоставления, которая сопоставляет задания для компании A для рабочих мест для компании B. Есть ли способ сопоставить это с помощью NHibernate без меня, чтобы изменить, как выглядит объект объекта? Я знаю, что могу добавить свойства списка и хаки, чтобы сделать это, как нормальное отношение «многие ко многим», но это должно быть шаблон, для которого у кого-то есть лучшее решение.
Я использую Fluent NHibernate, поэтому вы можете дать мне решения с использованием XML-карт Fluent NHibernate или NHibernate.
Если у вас есть сила, измените личность на то, что может быть сделано NHibernate для вас (hilo, guid.comb и т. Д.). – anonymous
Я не вижу, как это исправит проблему. Проблема в том, что с тем, как сейчас устанавливаются таблицы базы данных, FK в таблице никогда не позволят одному Job быть сохраненным без Id другого задания (которое также не сохраняется). Поэтому я думаю, что мне нужно изменить схему базы данных. –
Забыл о ограничениях db, извините. – anonymous