Мы переносим текущее приложение C# для использования nHibernate. Поскольку nHibernate продвигает чисто ориентированный на домен дизайн, мы можем добавить бизнес-объекты в качестве свойств классов или продолжать использовать идентификатор.nHibernate - Объекты или ObjectID в классах
Позвольте мне проиллюстрировать это примером;
Возьмите следующий существующий класс. Адрес (и дети) идентифицируются только по их идентификатору.
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, мы также хотели бы воспользоваться возможностью, чтобы изменить структуру класса в «лицо», чтобы лучше приспособить из потребностей. Надеясь, что 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; }
}
теперь хранить объект адреса и список объектов Детей против личности. Это лучше для наших бизнес-потребностей, поскольку у нас есть вся информация при доступе к классу, и мы можем отказаться от использования идентификаторов, но вместо этого использовать базовый объект.
В этом случае, то, что nHibernate сохранится для Person.Address? Будет ли он сохраняться только уникальный идентификатор, назначенный для этого объекта в таблице Person? Как насчет ChildrenObject?