با سلام
من برای مدیریت کاربران در mvc می خوام از CustomRoleProvider استفاده کنم.
در نتیجه از دو کلاس با رابطه جند به جند به شکل استفاده کردم :
public class Role
{
public Role()
{
this.Users =new HashSet<User>();
}
[Key]
public int RoleID { get; set; }
[Display(Name = "نام نقش")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public string RoleName { get; set; }
[Display(Name = "عنوان نقش")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public string RoleTitle { get; set; }
public virtual ICollection<User> Users { get; set; }
}
public class User
{
public User()
{
this.Roles = new HashSet<Role>();
}
[Key]
public int UserID { get; set; }
[Display(Name = "نام کاربری")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
[MinLength(6,ErrorMessage ="حداقل کاراکترها 6 رقم می باشد")]
public string UserName { get; set; }
[Display(Name = "نام")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public string UserFName { get; set; }
[Display(Name = "نام خانوادگی")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public string UserLName { get; set; }
public bool UserSex { get; set; }
[Display(Name = "کد ملی")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public string UserNCode { get; set; }
[Display(Name = "تلفن همراه")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
[MaxLength(10, ErrorMessage = "حداکثر شماره باید 10 رقم باشد")]
[StringLength(10, ErrorMessage = "تعداد شماره ها باید 10 رقم باشد")]
public string UserCellphone { get; set; }
[Display(Name = "ایمیل")]
[DataType(DataType.EmailAddress, ErrorMessage = "ایمیل به شکل درست وارد نشده است")]
public string UserEmail { get; set; }
[Display(Name = "آدرس")]
public string UserAddress { get; set; }
[Display(Name = "کد کاربری")]
//[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public int UserCode { get; set; }
[Display(Name = "رمز عبور")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
[MinLength(6, ErrorMessage = "حداقل تعداد باید شش رقم باشد")]
public string UserPassword { get; set; }
[Display(Name = "شماره کارت بانکی")]
//[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
[MinLength(16, ErrorMessage = "حداقل تعداد باید 16 رقم باشد")]
public string UserBankCardNumber { get; set; }
[Display(Name = "شماره حساب")]
public string UserAccountNumber { get; set; }
[Display(Name = "فعال")]
public bool UserIsActive { get; set; }
[Display(Name = "تاریخ عضویت")]
public DateTime UserMemberingDate { get; set; }
[Display(Name = "عکس پرسنلی")]
public string UserImageName { get; set; }
[Display(Name = "عکس کارت ملی")]
public string UserNCodeImageName { get; set; }
[Display(Name = "عکس دفترچه حساب")]
public string UserAccountImageName { get; set; }
public virtual ICollection<Role> Roles { get; set; }
}
در تنظیمات webconfig من مشکلی ندارم و حتی با جدوال با ارتباط یک به چند مدیریت کاربران پیاده سازی کردم ولی در رابطه چند به چند یکسری مشکل دارم :
1- چگونه هنگام معرفی کاربر جدید نقش آن را نیز به جدول کاربر اضافه کنم. (در واقع روش اضافه کردن داده به جدول برای کلاسهای دارای نقش چند به چند چگونه باید باشد)
2- رویداد GetRolesForUser رو باید چگونه پیاده سازی کنم تا با خطا مواجه نشم.
با تشکر فراوان