С нашими текущими свойствами инфраструктуры постоянства в дочернем объекте, которые указывают на его родителя, всегда указывают на один и тот же экземпляр. Например, учитывая следующие классы сущностей
public class Order
{
public int OrderId{get;set;}
public EntityCollection<LineItem> Items{get;}
}
public class LineItem
{
public Order Order{ get;set;}
}
Мы можем загрузить заказ из базы данных следующим образом:
var order = Order.FindById( 1000 );
Теперь вот ключ к моему вопросу. Для нашей текущей структуры верно следующее.
object.ReferenceEquals( order, order.Items[ 0 ].Order );
То есть свойство Order элемента строки указывает на точно такой же экземпляр объекта заказа в памяти при доступе через свойство Items.
Я немного устал поддерживать наши инструменты управления объектами и хочу переключиться на NHibernate или другую структуру персистентности. Тогда мой вопрос: работают ли функции ленивой загрузки NHibernate так же, или он будет загружать новый экземпляр объекта Order для каждой позиции?