0

既存のデータベースで ASP.NET Identity 2.0 を使用しようとしています。MVC プロジェクト (個人アカウント認証を使用) を作成し、DB を作成するために使用登録しました。

それで:

  1. 必要なテーブルのスクリプトを作成し、自分の DB に追加しました
  2. テーブルと ID テーブルを含む ADO.NET Entity Data Model (データベースが最初) を追加しました。
  3. アプリケーションを実行してユーザーを登録しましたが、すべてうまくいっています。

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

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

    public virtual Region Region { get; set; }
    
  3. 次に、モデルを更新してアプリケーションを実行しました。新しいユーザーを登録しようとすると、次のエラーが発生しました。

    AspNet UserLogin: EntityType: EntitySet 'AspNetUserLogins' は、キーが定義されていないタイプ 'AspNet UserLogin' に基づいています。

このシナリオで DB First Approach を引き続き使用するにはどうすればよいですか?

4

1 に答える 1

1

Identity は、Identity System を可能な限りカスタマイズするために Code First アプローチを使用し、一般的なデータ アクセスには DB First アプローチを使用しています。したがって、2 つのコンテキストがあり、1 つはデータ用で、もう 1 つは ID 用です。パッケージ マネージャー コンソールに次のように入力して、 Identity クラスを記述し、Identity コンテキスト クラスのコードを最初に移行する必要があります。

`Enable-Migrations -ContextNameType [Your_Identity_Context]

これにより、Identity コンテキスト タイプに対してのみコード ファーストの移行が可能になります。ユーザー テーブルに地域プロパティを追加する場合は、'ApplicationUser' (または IdentityUser から派生した任意のクラス) で必要な地域プロパティを追加し、移行を適用してデータベースのユーザー テーブルを更新します。

SQL スクリプトを生成してデータベースに適用することは、適切な方法ではありません。

于 2016-07-02T23:18:52.980 に答える