2012-01-22 14 views
1

私はこれをどこからでも探しており、明らかな解決策はないようです。 私は多くのユーザーがいるウェブサイトを持っていますが、誰も同じ電話番号を2回使用することができる、グローバルにユニークなプロファイル値(電話)を保存する必要があります。asp.net default profile providerを使って作業しています

私のすべてのユーザーが自分の電話の値を取得し、それを拒否するために提供されたユーザーと照合するのは非常に遅いでしょう。

プロファイルの値をすべてのユーザーに一意にする方法はありますか?ユーザー名が一意であるかメールであるかのようにありがとう。ここで

+0

ここで、ユーザー(SQL)を保管していますか?あなたは電話番号をそのように検索する場合、どこでユーザーを探していますか?電話番号をインデックスに登録して検索するのはなぜですか?ユーザーがC#のコレクションにある場合は、別のコレクションタイプを使用できます。 SQLの場合、テーブルに電話フィールドのインデックスを追加します。 – MacGyver

+0

私はasp.netのデフォルトメンバーシップ/プロファイルプロバイダを使用しています。 – user1027620

+0

その方法論ではweb.configの設定だけをチェックし、セキュアなセッションクッキーにユーザのアプリケーション情報(ユーザIDなど)を保存していませんか?私が求めているのは、これらのすべてのユーザーのデータをどこに保存しているか(たとえば、ユーザーを作成/更新/削除/取得するときなど)ですか?それらをActive Directory、SQLに格納していますか?このデータのクエリでは、電話番号が重複しないように、ユーザーを作成または更新する際にインデックスを参照する必要があります。 – MacGyver

答えて

1

は、SQLでテーブルにインデックスを作成する方法は次のとおりです。

CREATE INDEX IDX_CUSTOMER_PHONE on user (phone) 

データベースを照会するとき、それはむしろをループよりも、すぐに電話番号のテーブルを検索して値を検索しますすべての値:

SELECT phone FROM user WHERE phone = '555-555-5555' 

C#コードの実装についてのヘルプが必要な場合は、データベースにクエリする必要があります。私の提案は、2つの結果セットを返すようにストアドプロシージャを書くことです。最初の結果セットはレコードそのもので、2番目の結果セットは保存中にエラーが発生した場合(作成または更新時)にtrueまたはfalseを返します。 C#コードでは、最初にエラーの結果セットをチェックし、結果セットを返した場合は重複を表示します。

+0

ここで私の主な問題はSQLです。私は本当にそれに悪いと私はテーブルがどのように作成されているか分からない.../ – user1027620

+0

私はあなたがSQLサーバを設定していない場合、yahooのドットコムと私は任意の質問に答えるのを助けることができるwcfguy私にメールしてください。あなたは道に沿って多くを実行する可能性があります...オブジェクトエクスプローラでSQL Server Management Studioでテーブルを作成することから始めます。そして、あなたがどれくらい手に入るかを教えてください – MacGyver

+0

大丈夫です。 – user1027620

関連する問題