0

既存のデータベースでASP.NET ID 2.0を使用しようとしています。 私はMVCプロジェクト(個人アカウント認証を使用)を作成してから、DBを作成するために登録しました。その後ASP.NET ID 2.0 DBの最初のアプローチ:新しい列の追加

は:

  1. 私は私が私のテーブルプラスアイデンティティテーブルを含める(最初のデータベース)ADO.NETエンティティデータモデルを追加し、必要なテーブルのためのスクリプトを作成し、自分のDB
  2. にそれらを追加しました。
  3. 私はアプリケーションを実行し、ユーザーのために登録しました、すべてうまくいっています。

ここで、AspNetUserテーブルにリレーションシップを追加する必要があります。

  1. DBの関係でColumn LocationIdを追加しました。
  2. 私は、アプリケーションのユーザークラスに以下を追加しました:

    public virtual Region Region { get; set; } 
    
  3. その後、私は私のモデルを更新し、アプリケーションを実行し、私は新しいユーザーを登録しようとしたとき、私は次のエラーを得た:

    AspNet UserLogin: EntityType: EntitySet 'AspNetUserLogins' is based on type 'AspNet UserLogin' that has no keys defined.

このシナリオでは、どのようにDBファーストアプローチを使用できますか?

+0

可能な複製:http://stackoverflow.com/q/28531201/861716 –

+0

いいえ、私はシードまたはカスタムマッピングのコードを追加していません。 – Coding

+0

私は自分のカスタムDBにIDテーブルを追加した後、DB Firstを使ってモデルを追加しました。同じDBを指す2つの接続文字列もあります。 1つはID用、もう1つはデータベースファーストモデル用です。 – Coding

答えて

1

アイデンティティを使用するアイデンティティ・システムを作成するための第1のアプローチは、可能な限りカスタマイズを行い、共通のデータ・アクセスにはDBの最初のアプローチを使用しています。したがって、2つのコンテキストがあります.1つはデータ用であり、もう1つはアイデンティティです。これは、コード最初の移行を可能にします

`有効-移行-ContextNameType [Your_Identity_Context]

:あなたはとしてアイデンティティクラスを書いて、パッケージマネージャコンソールに入力して、アイデンティティコンテキストクラスのコード最初の移行を行う必要がありますアイデンティティコンテキストタイプの場合のみです。ユーザーテーブルのRegionプロパティを追加する場合は、 'ApplicationUser'(またはIdentityUserから派生したクラス)で必要なリージョンプロパティを追加し、移行を適用してデータベースのユーザーテーブルを更新します。

SQLスクリプトを生成してデータベースに適用するのは良い方法ではありません。

+0

これはうまくいきました。しかし、どのようにテーブルの名前を変更することができます。 Fluent Apiは私の場合は機能しません。 – Coding

関連する問題