Мы переносим текущее приложение C # для использования nHibernate.Так как nHibernate продвигает чисто доменный дизайн, мы можем добавить бизнес-объекты в качестве свойств классов или продолжать использовать ID.
Позвольте мне проиллюстрировать это на примере;
Возьмем следующееучебный класс.Адрес (и дочерние элементы) идентифицируются только по их идентификатору.
public class Person
{
public int PersonID { get; set; }
public string FirstName { get; set; }
public string FirstName { get; set; }
public int AddressID { get; set; }
public List<int> ChildrenIDs { get; set; }
}
Когда мы конвертируем класс в nHibernate, мы также хотели бы воспользоваться возможностью изменить структуру класса Person налучше удовлетворить потребности.В надежде, что nHibernate позаботится обо всем извлечении данных «под капотом»
public class Person
{
public virtual int PersonID { get; private set; }
public virtual string FirstName { get; set; }
public virtual string FirstName { get; set; }
public virtual AddressObject Address { get; set; }
public virtual List<ChildrenObject> Children { get; set; }
}
Теперь мы храним объект Address и объекты List of Children для Person.Это лучше для наших бизнес-потребностей, поскольку у нас есть вся информация при доступе к классу, и мы можем отказаться от использования идентификаторов, но вместо этого использовать базовый объект.
В этом сценарии то, что nHibernate сохранит для PersonАдрес?Сохранится ли в нем только уникальный идентификатор, назначенный для этого объекта в таблице Person?А как насчет ChildrenObject?