新しい Asp.net ID を Database First と EDMX で使用することはできますか? それとも最初にコードだけですか?
これが私がしたことです:
1) 新しい MVC5 プロジェクトを作成し、新しい ID でデータベースに新しいユーザー テーブルとロール テーブルを作成しました。
2) 次に、Database First EDMX ファイルを開き、関連する他のテーブルがあるため、新しい Identity Users テーブルにドラッグしました。
3) EDMX を保存すると、Database First POCO ジェネレーターがユーザー クラスを自動作成します。ただし、UserManager と RoleManager は、新しい Identity 名前空間 (Microsoft.AspNet.Identity.IUser) から継承する User クラスを想定しているため、POCO User クラスを使用しても機能しません。
考えられる解決策は、POCO Generation Classes を編集して、User クラスが IUser から継承するようにすることだと思いますか?
それとも、ASP.NET Identity は Code First Design とのみ互換性がありますか?
++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++
更新: 以下の Anders Abel の提案に従って、これが私がしたことです。それはうまくいきますが、もっとエレガントな解決策があるかどうか疑問に思っています。
1) 自動生成されたエンティティと同じ名前空間内に部分クラスを作成して、エンティティ User クラスを拡張しました。
namespace MVC5.DBFirst.Entity
{
public partial class AspNetUser : IdentityUser
{
}
}
2) DBContext ではなく IdentityDBContext から継承するように DataContext を変更しました。EDMX を更新して DBContext および Entity クラスを再生成するたびに、これをこれに戻す必要があることに注意してください。
public partial class MVC5Test_DBEntities : IdentityDbContext<AspNetUser> //DbContext
3) 自動生成された User エンティティ クラス内で、override キーワードを次の 4 つのフィールドに追加するか、これらのフィールドをコメント アウトする必要があります。これらのフィールドは IdentityUser から継承されているためです (ステップ 1)。EDMX を更新して DBContext および Entity クラスを再生成するたびに、これをこれに戻す必要があることに注意してください。
override public string Id { get; set; }
override public string UserName { get; set; }
override public string PasswordHash { get; set; }
override public string SecurityStamp { get; set; }