2015-03-18 1 views
0

Всякий раз, когда пользователь хочет редактировать или читать некоторые данные, он получает копию файла XML в своем приложении. В это время другому пользователю не разрешается редактировать один и тот же файл XML, но он должен иметь возможность его просматривать. Я мог бы добавить заблокированный столбец в таблицу SQL Server, где хранится XML-файл, но я все еще не могу разрешить чтение и предотвращать только запись для второго пользователя. Или есть ли другой способ гарантировать параллелизм и атомарность данных в XML-файле?Я храню некоторые данные в XML-файлах на SQL Server как varbinary. Как создать параллельный доступ?

+0

Не могли бы вы сохранить * who * (уникально), что он заблокирован в колонке 'LockedBy' (или аналогичной)? Затем вы можете определить, имеет ли кто-то другой доступ только для чтения или записи. Возможно, вам понадобится механизм, позволяющий кому-то знать, что их версия только для чтения была обновлена ​​при освобождении блокировки. –

ответ

0

Внесите блокировочную колонку на стол. Когда кто-то нажимает для редактирования, они запрашивают блокировку. Это довольно легко сделать с EF. Просто установите значение Concurrency для свойства LockedTime и/или LockedBy.

Я предлагаю иметь как «LockedBy», так и «LockedTime»; Таким образом, если какой-то пользователь забыл уйти, вы все равно сможете кому-то еще входить и редактировать данные.

В этом случае вы захотите сохранить «оригинальный» XML в модели/представлении и выполнить обновление только тогда, когда «исходный» XML все еще находится в базе данных.