Я немного запутался с NHibernate и Session. Как я понял, я должен использовать сеансы «как можно быстрее», что означает, что два разных взаимодействия получают свой собственный сеанс.
Что мне делать в случае взаимодействия с пользовательским интерфейсом, я хочу сохранить в БД. У меня есть простой пример, где древовидная структура перечисляет некоторые элементы и привязана к свойству IsExpanded моих бизнес-объектов (я знаю, что это плохая практика, но для моего подхода это нормально) ...
Вопрос теперь в том, когда сохранить изменения. В настоящее время я смываю вручную, когда окно закрыто, это не совсем верно. Я мог бы сбрасывать каждый раз, когда свойство изменяется, но я думаю, что это излишне.
Есть ли какие-то шаблоны или советы для такого рода проблем. Вид "уберите и храните информацию GUI в нужный момент" ...
Вот код для лучшего понимания:
private static PjmDbController _d;
private static IList<Topic> _allItems;
private static void TopicStoresChildStatesExpandedOrNot()
{
var w = new Window();
_d = new PjmDbController();
_allItems = _d.GetAllRoots();
w.Content = new PjmTreeView<Topic>() {ItemsSource = _allItems};
w.Show();
w.Closed += new EventHandler(w_Closed);
}
static void w_Closed(object sender, EventArgs e)
{
_d.Session.Flush();
}
Спасибо за советы,
Chris
PS: Статика только для тестирования: -)