[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
質問
Identity 1.0.0 から Identity 2.0.1 への移行は、次のように行います。 記事
と生成された移行コードは、新しいIdentityUserについては何もありません。新しいカラムを追加しないのです。
そこで、新しいプロジェクトを作り、もう一度やってみましたが、migrationsのコードは空っぽです。
この問題を解決するために、私はSQL Serverで直接編集を行い、私のソリューションにデータベースを再度インポートしました。
これで私の
AspNetUser
は、私の
IdentityUser
ご覧の通り
IdentityUser
public virtual int AccessFailedCount { get; set; }
public virtual ICollection<TClaim> Claims { get; }
public virtual string Email { get; set; }
public virtual bool EmailConfirmed { get; set; }
public virtual TKey Id { get; set; }
public virtual bool LockoutEnabled { get; set; }
public virtual DateTime? LockoutEndDateUtc { get; set; }
public virtual ICollection<TLogin> Logins { get; }
public virtual string PasswordHash { get; set; }
public virtual string PhoneNumber { get; set; }
public virtual bool PhoneNumberConfirmed { get; set; }
public virtual ICollection<TRole> Roles { get; }
public virtual string SecurityStamp { get; set; }
public virtual bool TwoFactorEnabled { get; set; }
public virtual string UserName { get; set; }
IdentityUser.cs
public class ApplicationUser : IdentityUser
{
public bool Has_accepted_policy { get; set; }
public int user_type_id { get; set; }
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection")
{
}
}
AspNetUser
public string Id { get; set; }
[Required]
[StringLength(256)]
public string UserName { get; set; }
public string PasswordHash { get; set; }
public string SecurityStamp { get; set; }
[StringLength(256)]
public string Email { get; set; }
public bool EmailConfirmed { get; set; }
public bool Is_Active { get; set; }
[Required]
[StringLength(128)]
public string Discriminator { get; set; }
public int? user_type_id { get; set; }
public bool Has_accepted_policy { get; set; }
public string PhoneNumber { get; set; }
public bool PhoneNumberConfirmed { get; set; }
public bool TwoFactorEnabled { get; set; }
public DateTime? LockoutEndDateUtc { get; set; }
public bool LockoutEnabled { get; set; }
public int AccessFailedCount { get; set; }
... other virtual properties
で、ユーザーを登録しようとすると、次のような例外が発生します。
エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
この行で
IdentityResult result = await UserManager.CreateAsync(user, model.Password);
私の スタートアップ.Auth.cs
UserManagerFactory = () => new UserManager<ApplicationUser>(new UserStore<ApplicationUser>());
そして、私の
AccountController
を宣言しています。
UserManager
このように
public AccountController()
: this(Startup.UserManagerFactory(), Startup.OAuthOptions.AccessTokenFormat)
{
}
public AccountController(UserManager<ApplicationUser> userManager,
ISecureDataFormat<AuthenticationTicket> accessTokenFormat)
{
UserManager = userManager;
AccessTokenFormat = accessTokenFormat;
}
public UserManager<ApplicationUser> UserManager { get; private set; }
の新しいプロパティ以外は何も変えていません。
AspNetUser
クラスで、移行前はうまく動作していました。
にも同様の問題があります。 コードプレックス は修正済みと表示されていますが、解決策は示されていません。
どなたか修正方法をご存知でしょうか?
EDIT
念のため、SQLデータベースを編集した際に、何か間違いがなかったか確認するためです。別のプロジェクトを作成し、Identityデータベースを生成して、そのデータベースの接続文字列を変更しましたが、まだ同じエラーが発生します。
解決方法
データベースを編集しているとき、Identity 2.0.0 では
User_Id
に対して
UserId
で
AspUserClaims
テーブルを作成します。そのあと、同じエラーが発生しましたが、tschmit007さんがおっしゃるように
ApplicationDbContext
を
UserStore
のコンストラクタを使用すると、動作するようになりました。
UserManagerFactory = () => new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
解決方法は?
私の場合、コンテキストのインスタンス化を失敗しているようです。
UserManagerFactory = () => new UserManager<ApplicationUser>(new UserStore<ApplicationUser>());
であるべきです。
UserManagerFactory = () => new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み] 関数を終了するには?
-
[解決済み] Could not find a part of the path ... binroslyncsc.exe
-
[解決済み] HttpClientリクエストのContent-Typeヘッダーはどのように設定するのですか?
-
[解決済み】ASP.NET Identityを使用する際にテーブル名を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み】プロセスが実行されているかどうかを知るには?
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する