Это действительно свело бы на нет всю цель использования ORM, не так ли? Каков нормальный шаблон для обновления дочерних объектов, подобных этому? Конечно, это очень распространенный сценарий. Это загрузить все до:
var user = session.Get<User>(userID);
user.Country = session.Get<Country>(Convert.ToInt32(Request.Form["Country_ID"]));
user.Manager = session.Get<User>(Convert.ToInt32(Request.Form["Manager_ID"]));
user.State = session.Get<State>(Convert.ToInt32(Request.Form["State _ID"]));
user.Region = session.Get<Region>(Convert.ToInt32(Request.Form["State _ID"]));
Нужно ли нам делать дополнительный вызов базы данных для каждого дочернего объекта (событие, хотя эти объекты не обновляются)?
На данный момент имеем:
var ds = new NameValueDeserializer();
var entity = session.Get<TEntity>(entityID);
ds.Deserialize(entity, form);
session.Update(entity);
Так что это работает в общем для всех сущностей. Необходимость специально загружать дочерние объекты для сохранения сущности была бы ненужной затратами на кодирование (а также делать дополнительные вызовы базы данных).
Нет ли способа обойти это в конфигурации, отображениях, перехватчиках и т. Д.? Кто-нибудь знает, почему Hibernate принял это дизайнерское решение?