Database FirstとEDMXで新しいAsp.net Identityを使用することは可能ですか?それとも最初にコードだけですか?
これが私がしたことです:
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生成クラスを編集して、ユーザークラスが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)自動生成されたユーザーエンティティクラス内で、次の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; }