2009-04-29 9 views
1

新しいASP.NET MVCアプリケーションを作成する際、私はまだアカウントを作成していない一時的なユーザのためにユーザが作成したデータを格納するために使用しているアプローチの問題があります私は実際のユーザーに変換しようとします。それはおそらくあまり意味が、ので、私が説明させていません:LINQ to SQL - テンポラリユーザを実際のユーザに変換する

  • サイトへの訪問者は、ユーザ名の登録が行われる前に、プロファイル設定を入力することができ、パスワードなど
  • 私は、データベースを作成していますこの場合、新しいユーザーのためにLINQ to SQL経由でエントリを作成し、一時ユーザー名としてRequest.AnonymousID値を使用します。
  • ユーザーが登録を選択すると、関連するデータベースレコードを一時的なユーザー名の代わりに新しく入力したユーザー名を使用するように切り替える必要があります。

問題は...私は、ユーザー名が主キーであるので、私はできないレコードを更新しようとするので、ときに私はレコードを削除し、新しいものを追加することを余儀なくさだということです

私はおそらくこれで辛抱強くすることができますが、私はちょうど間違ったやり方でこのことをやっているかもしれないと思います。登録する前に訪問者に情報を保存させ、 。

プロフィールについては知っていますが、プロフィール情報を他の訪問者が利用できるようにしたいと考えています。私は匿名のプロファイルを作成できることも知っていますが、データモデルをweb.configファイルから外しておく必要があるようです。

+0

多分、自動的にユーザーをログインされたときにも、ユーザーを識別することができるようになりますそのようにしますプライマリキーを更新することはできません。ただし、テーブル内の他のものと衝突しない限り、どのエラー/例外が表示されますか? – tomfanning

+0

多分それはそうではありません。今の私の前にエラーはありませんが、削除しようとすると+代わりに「存在するエンティティに接続できません」というエラーが表示されます。 私はIDであるフィールドを持っているので、そのフィールドに新しい値を生成する問題があるかもしれません。私はまた、私が変更しようとしている2つのテーブルのユーザー名の間にFK関係があります。 – curlyfries

+0

だから...ええと...ええ。おそらく、外来キーが問題であり、私はそれを削除しなければならないかもしれません。 – curlyfries

答えて

1

カスタムユーザーデータを持つテーブルに独立した主キーを使用することをお勧めします。 そして、RefAnonymousIdRefUserIdのようなフィールドをそれぞれのユーザーデータを匿名ユーザーと登録ユーザーに関連付ける必要があります。例えば

 
TABLE UserData 
(
    UserDataID int IDENTITY(1,1) PRIMARY KEY, 
    RefAnonymousId uniqueidentifier, 
    RefUserId uniqueidentifier, 
    ... (data fields), 
    (maybe also unique keys on RefUserId and RefAnonymousId) 
) 

ユーザーがログアウトし、私はかなり驚いたで...

+0

ああ、私はそれが好きです。私はそれを試し、あなたに戻ってきます。 – curlyfries

+0

感謝のように働いた - ありがとう! – curlyfries