Это сделает это:
/[A-Za-z\u00C0-\u00FF ]+/.exec('hipopótamo maçã pólen ñ poção água língüa')
Он явно выбирает диапазон символов юникода. Он будет работать для латинских символов, но другие странные символы могут быть вне этого диапазона.
Я думаю, что это сводится к дизайну Ваших объектов. Поскольку ленивая загрузка может быть осуществлена в на уровень объектов, можно использовать в своих интересах тот факт, когда Вы думаете об управлении сеансами.
Например, у меня есть набор объектов, которые богаты данными и ленивые загруженный, и у меня есть представление сетки/сводки и представление деталей для них. В сводном сеткой представлении я не использую лениво загруженную версию объекта. Я использую суррогатный объект представить те данные, и что суррогатный объект не ленив загруженный.
С другой стороны, после того как пользователь выбирает ту запись для просмотра/редактирования, и Вы вводите мультиразбитое на страницы представление деталей объекта, именно тогда мы применяем ленивую загрузку к конкретному объекту. Данные теперь ленивы загруженный, в зависимости от которого детали посмотрелись только по требованию. Тем путем объем моей сессии, являющейся открытым для ленивой загрузки только, длится, пока представление деталей используется.
Как Вы сказали прежде, Вы не можете использовать границу HttpRequest, но можно понять то, что является "HttpRequest" в настольном приложении.
Позвольте мне объяснить. Обычно Ваш HttpRequest будет контроллером для действия, и Вы ограничите свою сессию тем определенным действием. Теперь в Вашем настольном приложении "контроллеры" (события) могут быть меньшего размера, но как @Jon сказал, окно может легко представить границу: Вы работаете с вещами там, позволяете им быть на Вашей сессии.
Может быть, мы можем придумать шаблон Command. Каждое знаменательное событие подпитывает и запускает команду и выполняет ее. Базовая реализация AbstractCommand.Execute () отвечает за инициализацию сеанса, упаковку транзакции, вызов конкретной реализации SomeCommand._Execute () и закрытие всего материала.
В любом случае, это далеко не агностик персистентности, как и должно быть, когда я загрузил свой объект и (хочу) иметь дело только с простыми экземплярами (здесь я особенно имею в виду ленивую загрузку).
Можно ли иначе реализовать какое-то поведение автоматического открытия / автоматического закрытия? Этого следует достичь, сделав уровень сохраняемости чувствительным к запросам более высоких уровней, даже в неявных случаях, таких как триггеры с отложенной загрузкой. Что касается закрытия соединения, то уровень сохраняемости может закрыться после заданного тайм-аута (10 секунд?) Бездействия БД. Я знаю, это не так уж сложно. Но это действительно сделало бы более высокие уровни агностическими.
Спасибо, Марчелло
Айенде недавно написал отличную статью на эту тему в MSDN .