2010-03-17 7 views
1

Я хочу иметь только уникальные значения в списке SharePoin. Для этого я могу использовать обработчик событий ItemAdding, как указано в приведенной ниже ссылке.SharePoint: уникальные значения столбца

http://weblogs.asp.net/vikram/archive/2008/12/24/sharepoint-using-event-handler-to-make-a-column-unique.aspx

Теперь у меня есть сомнения: Предположим, что два пользователь пытается добавить элемент списка в списке с тем же значением столбца (который требует уникального значения) в то же время. событие ItemAdding будет запущено одновременно для обоих вызовов? Если это так, то существует вероятность того, что два элемента имеют одинаковое значение в столбце. Пожалуйста подтвердите.

+0

ОК в моем приложении Я программно добавляю элемент списка при нажатии кнопки на пользовательской странице. Таким образом, одна из возможностей заключается в использовании блокировки или мьютекса, так что только один поток может создать элемент списка, а перед созданием элемента я могу проверить наличие дубликата. Здесь я снова сомневаюсь: что произойдет в сценарии с балансировкой нагрузки? Я имею в виду, если два запроса передаются на двух разных серверах, поэтому они могут выполняться параллельно. Есть ли какой-либо механизм, с помощью которого я могу добиться синхронизации между машинами? – Anoop

ответ

1

Я думаю, этот метод позволяет иметь только полуисторические значения в столбце. То есть, если все нормально, оно будет уникальным. Однако вы не можете сравнивать свойства двух добавляемых одновременно элементов (и да, это может произойти, поскольку веб-сервер IIS многопоточен). Следовательно, в результате вы можете иметь повторяющиеся значения.

Обходной путь - реализовать обработчик события ItemAdded и удалить вновь добавленный элемент, если он имеет это свойство так же, как и любой другой существующий элемент. Это, конечно, произойдет очень редко.

0

Если у вас достаточно одновременных пользователей, что это может быть проблемой, SharePoint, вероятно, не является подходящим инструментом для работы. Если значение создается пользователем, крайне маловероятно, что два пользователя будут добавлять одно и то же значение одновременно. Если он автоматически генерируется, вы, вероятно, должны использовать что-то на основе идентификатора, который, как известно, уникален.

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

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