Database First 및 EDMX와 함께 새로운 Asp.net Identity를 사용할 수 있습니까? 아니면 코드를 먼저 사용합니까?
내가 한 일은 다음과 같습니다.
1) 새 MVC5 프로젝트를 만들고 새 ID로 데이터베이스에 새 사용자 및 역할 테이블을 만들도록했습니다.
2) 그런 다음 Database First EDMX 파일을 열고 관련된 다른 테이블이 있으므로 새 Identity Users 테이블로 끌어 왔습니다.
3) EDMX를 저장하면 Database First POCO 생성기가 자동으로 User 클래스를 생성합니다. 그러나 UserManager 및 RoleManager는 새 Identity 네임 스페이스 (Microsoft.AspNet.Identity.IUser)에서 상속 된 User 클래스를 예상하므로 POCO User 클래스를 사용할 수 없습니다.
가능한 해결책은 내 사용자 클래스가 IUser에서 상속되도록 POCO 생성 클래스를 편집하는 것입니다.
아니면 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; }