>

Entity Framework 6.0과 함께 .Net Identity 2.0을 사용하고 있습니다. 나는 Person 가  상속 클래스 . 나는 IdentityUser 가  (추가 Teacher 가 있습니다  속성) 및 Title  (추가 Student 가 있습니다  속성) StudentNumber 에서 상속되는 클래스  수업. 또한 데이터베이스에서 해당하는 역할이 있습니다. Person  그리고 Student  (또는 선생님).

아래 코드가 특정 역할을 가진 사용자를 생성하는 가장 효율적인 방법인지 궁금합니다. 중복되는 것처럼 보이지만 더 짧은 방법은 알 수 없습니다.

Instructor

gEchoLuDBContext _db = new gEchoLuDBContext(); var userStore = new UserStore<IdentityUser>(_db); var userManager = new UserManager<IdentityUser>(userStore); foreach (ListItem role in rb_Roles.Items) { if (role.Selected) { var user = new Person() { UserName = txt_Username.Text, FirstName = txt_Firstname.Text, LastName = txt_Lastname.Text, Email = txt_Email.Text }; if (role.Text == "Student") { user = new Student() { StudentNumber = " ", UserName = txt_Username.Text, FirstName = txt_Firstname.Text, LastName = txt_Lastname.Text, Email = txt_Email.Text }; } else if (role.Text == "Instructor") { user = new Teacher() { Title = "", UserName = txt_Username.Text, FirstName = txt_Firstname.Text, LastName = txt_Lastname.Text, Email = txt_Email.Text }; } IdentityResult result = userManager.Create(user, txt_Password.Text); if (result.Succeeded) { IdentityResult result2 = userManager.AddToRole(user.Id, role.Text); if (!result2.Succeeded) { lbl_Result.Text = "The user created successfully. But, the selected roles are not assigned!"; } } } }
  • 답변 # 1

    글쎄, 둘 다 Student  그리고 Teacher  기본 클래스 Person 에서 상속 . 이를 고려할 때 실제로이 코드에서 학생이나 교사를 실제로 사용하지 않는다는 사실을 고려할 때 역할을 확인하는 것이 왜 귀찮습니까? 당신의 UserManager<IdentityUser>   Teacher 가 아닌 사람을 데려 가고 있습니다.  또는 Student .

    이제 내가 틀렸다면 팩토리 패턴을 살펴볼 것을 제안합니다. GUI의 모든 필드를 인수로 사용하여 Person 유형을 결정하는 팩토리를 작성할 수 있습니다.  수신 된 인수를 기반으로 작성합니다. 그것은 모든 if...else if 를 멀리하지 않습니다  논리, 그러나 그것을 추상화하고 GUI에서 숨기고 코드를 더 테스트 가능하게 만듭니다.

  • 이전 amazon web services - AWS S3에서 일부 유니 코드 문자가 손상 되었습니까?
  • 다음 c++ - int를 보유한 단순 연결 목록