2010-12-29 3 views
1

Это уже много раз, но мой разум просто гаснет в данный момент, я попытаюсь дать простой обзор моей текущей ситуации.Картографический элемент через соединительный стол с NHibernate

я в настоящее время есть 3 таблицы, как показано ниже:

Office > id, name 
Person > id, name 
Office_Personnel > office_id, person_id 

Я тогда модель для лица (номер, имя) и Office, однако модель офиса содержит кадровую информацию:

public class Office 
{ 
int Id {get;set;} 
string Name {get;set;} 
ICollection<Person> Personnel {get;set;} 
} 

Картографировать человека легко, но теперь я немного озадачен тем, почему офис неправильно отображает карту. Я решил использовать набор, когда я отображающую Персонала, как не должно быть никаких дубликатов, однако, кажется, не работает, как и следовало ожидать ...

<set name="Personnel" table="office_personnel" cascade="all"> 
    <key column="office_id" /> 
    <one-to-many class="Person"/> 
</set> 

Теперь одна вещь, которая поражает меня как нечетным является то, что нет никаких указаний относительно того, какой человек должен быть привязан к (person_id). Он пытается найти столбец * office_id * в таблице Person.

Я уверен, что это всего лишь простая проблема, и я являюсь идиотом, но любая помощь будет замечательной!

На стороне записки, я взвешивал, если я даже потрудился имея таблицу среднего человека, как я мог непосредственно положить колонку Office_Id в таблице Person, но им не на 100% уверены, что если в моем реальных проект класс Человек может быть в нескольких отделениях далее вниз по линии ...

ответ

1

чтобы отобразить это правильно, вам необходимо либо иметь 3 сущности:

Person 1 <-> n Personnel n <-> 1 Office 

или отобразить его в качестве МНОГИХ to-many с использованием таблицы соединений (см. раздел 8.3 спящего режима do cs)

Person n <-> n Office 
+0

Чтобы соответствовать его модели, последний более адекватен. –

Смежные вопросы