Как создать разные сессии для разных окон в настольном приложении с ActiveRecord? - PullRequest
0 голосов
/ 10 января 2010

Я создаю настольное приложение с помощью Castle ActiveRecord и хочу иметь возможность делать эквивалент 1 сеанса nHibernate для каждой формы окна. Любые идеи о том, как я могу сделать это с Active Record?

В частности, у меня есть главное окно, которое позволяет вам просматривать данные (только для чтения), а затем вы можете открывать отдельные формы для редактирования данных.

Каждый раз, когда открывается форма, я хочу создать новый сеанс, получить копию данных для редактирования (чтобы их можно было изменить, не влияя на данные в главном окне). Затем я хочу иметь возможность манипулировать этой копией с помощью привязки данных. И, наконец, либо передайте изменения (если пользователь выбрал Сохранить), либо откатите их (если пользователь решит отменить).

Есть идеи?

1 Ответ

1 голос
/ 11 января 2010

Если вам не нужна отложенная загрузка, не используйте SessionScope. Вы можете просто связать данные и вызвать entity.Save () при сохранении. Поскольку ваши объекты отделены без SessionScope, вам не нужно ничего делать при отмене формы.

Если вам нужна отложенная загрузка, тогда это не будет работать с обычным ActiveRecord. ConversationalScope, который позволяет использовать CpBT (в вашем случае Conversation per Instance), запланирован, но пока недоступен.

Одна из возможностей - попробовать Rhino Commons, у которого есть единичная реализация ActiveRecord. Это может позволить вам то, что вы хотите с текущим AR, но я не использовал его около 2 лет.

Edit: Базовая реализация CpBT теперь доступна из транка. Выезд и построить с NANT. Посмотрите эту ссылку, чтобы узнать, как ее использовать: https://svn.castleproject.org/svn/castle/ActiveRecord/trunk/src/Castle.ActiveRecord.Tests/Conversation/ConversationScenarioTest.cs Он еще не готов к производству, но я хотел бы получить отзывы об этом.

...