Какую транзакцию IsolationLevel я должен использовать? - PullRequest
0 голосов
/ 10 июля 2011

Я пишу веб-сервис WCF, который позволяет регистрировать новых пользователей в системе.Таким образом, у меня есть следующий контракт операции:

 [ServiceContract]
 public interface ISecurityService
 {
     /// <summary>
     /// Register new user in system, if no exceptions were thrown 
     /// user was registered successfully
     /// </summary>
     [OperationContract]
     [FaultContract(typeof(SecurityFaultException))]
     void Register(string userName, string password);
 }

Идея проста, как синхронизировать вызов метода Register, чтобы предотвратить регистрацию двух пользователей с одинаковыми именами?

Я думал об использованииIsolationLevel.Serializable но я не уверен насчет этого решения.Может кто-нибудь дать мне хороший совет или поделиться хорошей практикой по синхронизации служб WCF.

ОБНОВЛЕНО: я сохраняю пользователей в базе данных.

1 Ответ

2 голосов
/ 10 июля 2011

Если вы сохраняете пользователей в БД, достаточно использовать уровень изоляции по умолчанию (ReadCommited) и просто поместить уникальное ограничение или первичный ключ в столбец UserName, чтобы предотвратить дублирование значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...