2011-07-10 64 views
0

我正在編寫一個WCF Web服務,它允許在系統中註冊新用戶。所以,我有以下經營合同:我應該使用什麼交易IsolationLevel?

[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服務同步的良好做法。

已更新: 我將用戶保存在數據庫中。

+0

爲什麼要串行化註冊調用? (這是爲了理解事務隔離需求的本質。) – Richard

+0

你在哪裏存儲註冊用戶?在內存中還是在數據庫中? –

+2

我認爲它應該足夠當UserName在Db中具有唯一約束。 IsolationLevel不應與Insert相關。 –

回答

2

如果將用戶保存在數據庫中,使用默認隔離級別(ReadCommited)就足夠了,只需在UserName列中添加一個唯一的約束或主鍵,以防止重複值。

相關問題