Я не знаю, как Castle ActiveRecord использует NHibernate для загрузки объектов из базы данных (используя ISession.Get
или ISession.Load
?), Но я знаю, что с NHibernate можно сделать следующее:
var ghostCustomer = session.Load<Customer>(customerId);
var account = session.Get<Account>(accountId);
account.Customer = ghostCustomer;
Здесь ghostCustomer
будет унитарным прокси-объектом, поля которого будут загружаться с отложенной загрузкой при первом обращении к ним. Но поскольку мы используем его только для назначения отношения с клиентом в учетной записи, он никогда не будет загружен.
Таким образом, единственный доступ к базе данных в этом примере будет происходить при загрузке учетной записи и впоследствии, когда сеанс сбрасывается и учетная запись должна быть обновлена.