2009-06-19 4 views
2

Я ищу для реализации базы данных, как транзакции в C#. Я обрабатываю несколько файлов XML. Любой конкретный файл XML может вызывать дочерний XML-файл во время обработки. Процессор начнет обработку дочернего XML-файла. Если условия инициализации терпят неудачу или возникает исключение, я хочу возобновить обработку родительского XML-файла. Именно по этой причине я ищу транзакцию, такую ​​как реализация, чтобы я мог откатиться. Можно ли достичь? Может ли кто-нибудь предоставить мне фрагмент кода или псевдокод?Сделки с файлами XML

FYI - Я использую .NET Compact Framework.

+0

То, что вы описали, похоже на обработку исключений. Я не вижу, что вы пытаетесь разграничить транзакцией. Вы не упомянули о внесении каких-либо изменений/записи в документы. – Logicalmind

+0

Я знаю, что этот вопрос очень старый, но я столкнулся с той же проблемой. Можете ли вы повторно ответить на этот вопрос? – Vishal

ответ

2

На компактном каркасе я думаю, что вы собираетесь перевернуть свой собственный менеджер транзакций.

В полной структуре вы могли бы, вероятно, построить что-то, используя TransactionScope и IEnlistmentNotification. Вам пришлось бы выполнить небольшую работу, чтобы получить все ваши транзакции, поскольку не существует поддержки трансакций в xml из коробки.

+0

Это хорошая отправная точка. У меня есть длинный путь реализации транзакций в xml. – rxm0203

0

Без использования собственного компонента управления транзакциями это будет сложно реализовать.

Не можете ли вы проверить/проверить весь XML перед тем, как позволить вашему приложению перейти на фазу обработки?

+0

COM + не существует в Windows CE – ctacke

+0

@ctacke - thanks - lern2readtehquestion :) – Kev

0

Возможно, вы можете попробовать использовать подрывную деятельность. Существуют библиотеки для управления им с C#. Поэтому, чтобы начать транзакцию, вы только начинаете работать и откатываете назад, вы делаете откат. Согласование вашего дерева svn завершает транзакцию.

Я не знаю, если это слишком простой подход. Это может быть так, но то, что вы описали, требует только некоторых свойств транзакции. В частности, вы указали, что вам нужна атомарность (т. Е. Возможность отката изменений в несколько файлов одновременно). Прочность подразумевается, но фиксация получает это.

Вы не упоминали о каких-либо ограничениях согласованности, отличных от условий инициализации и исключений, но, предположительно, ваш код мог бы справиться с ними и заставить откат, если какое-либо правило будет нарушено.

Изоляция либо твердая, либо легкая. Все зависит от того, нужно ли вам одновременно поддерживать более одной транзакции. Требуется ли одновременное обновление? Если нет, просто создайте что-то для обеспечения последовательного доступа к системе, и вы закончите. Если вам нужны параллельные обновления, я боюсь, что у меня нет идей :-)

+0

Серьезно? Вы предполагаете, что он порты и устанавливает поставщика SCC на своем мобильном устройстве для обработки транзакционного разбора XML? – ctacke

+0

:-) ОК - Я не обращал слишком много внимания на упоминание компактной рамки. По-прежнему остается справедливым вопрос о том, нужны ли ему все элементы управления транзакциями или только подмножество. –

Смежные вопросы