С помощью NHibernate вы создаете свой код независимо от макета базы данных. Вам не нужно (и не нужно) создавать классы, точно такие же, как таблицы и столбцы вашей базы данных.
Пример:
public class User
{
public IList<Address> Addresses { get; private set; }
public int Id { get; set; }
}
Отображение зависит от отношения между адресом и пользователем:
- Может ли пользователь иметь несколько адресов?
- Могут ли несколько пользователей иметь один и тот же адрес?
- Что вы хотите, чтобы внутреннее соединение на что? (Я бы ожидал много ко многим
отношения здесь с внешним соединением)
В сценарии, когда у пользователя несколько адресов, и эти адреса могут использоваться разными пользователями, вы можете использовать сопоставление «многие ко многим» для сопоставления адреса.
Сопоставление также зависит от того, как вы хотите создать свои классы пользователей и адресов.
- Логично ли иметь список адресов у пользователя?
- Логично ли иметь список пользователей в адресе?
- Может ли пользователь иметь один и тот же адрес дважды?
Идея NHibernate заключается в следующем: написать код так, как вам нравится, и добавить отображение в базу данных позже.