پروفایل متفاوت برای Role های متفاوت
سلام . من در برنامم دو تا role فروشنده و خریدار دارم که بعضی فیلدهای پروفایل برای هر دوی اونها مشترک هست و بعضی فرق میکنه. کاری که من انجام دادم در ApplicationUser به این شکل هست:
public class ApplicationUser : IdentityUser
{
public virtual Seller Seller { get; set; }
public virtual Customer Customer { get; set; }
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationU ser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
}
میخواستم ببینم آیا این راه درست هست؟ آیا راه بهتری برای پیاده سازی این موضوع وجود نداره؟
ممنون
نقل قول: پروفایل متفاوت برای Role های متفاوت
اگر فیلد مشترک بین هر 2 جدول دارید میتونید از ارث بری یا همون Inheritance استفاده کنید ، یعنی یک کلاس والد داشته باشید که فیلد های مشترک داخلش قرار میگیرن و 2 کلاس فرزند که از کلاس والد ارث بری میکنند .
با این روش کد تمیز تری خواهید داشت و از تکرار تو کدتون جلوگیری میشه و اصل DRY رو رعایت کردید .
اگر بنده منظورتون بد متوجه شدم بفرمایید که بیشتر راهنمایی کنم .
نقل قول: پروفایل متفاوت برای Role های متفاوت
نقل قول:
نوشته شده توسط
Moien Tajik
اگر فیلد مشترک بین هر 2 جدول دارید میتونید از ارث بری یا همون Inheritance استفاده کنید ، یعنی یک کلاس والد داشته باشید که فیلد های مشترک داخلش قرار میگیرن و 2 کلاس فرزند که از کلاس والد ارث بری میکنند .
با این روش کد تمیز تری خواهید داشت و از تکرار تو کدتون جلوگیری میشه و اصل
DRY رو رعایت کردید .
اگر بنده منظورتون بد متوجه شدم بفرمایید که بیشتر راهنمایی کنم .
متشکر از پاسختون
ببینید من میخواستم فیلدهای مشترک رو در همون کلاس ApplicationUser اضافه کنم که اینجوری هم از تکرار جلوگیری میشه. به این شکل:
public class ApplicationUser : IdentityUser
{
public virtual String Fname { get; set; }
public virtual String Lname { get; set; }
public virtual Seller Seller { get; set; }
public virtual Customer Customer { get; set; }
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationU ser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
}
الان مساله من پیاده سازی همین دو نوع پروفایل هست. این که آیا این روش به طور کلی روش درستی هست. الان در این روش من موقع ثبت نام کاربر با توجه به نوع کاربر که میتونه فروشنده یا خریدار باشه مقادیر رو تنظیم میکنم. مثلا اگه یک فروشنده بخواد ثبت نام کنه من فیلد های مشترک و فیلدهای کلاس Seller رو به کاربر نشون میدم و موقع ثبت اطلاعات ، فیلد از نوع Customer رو null قرار میدم. در ضمن یک فیلد از نوع ApplicationUser هم در هر دو کلاس Seller و Customer وجود داره. به طور کلی میخواستم بپرسم آیا این رویه ای که پیش گرفتم روش مناسبی هست برای دو نوع ثبت نام و پروفایل متفاوت؟ یا روش بهتری برای این کار وجود داره؟ ممنون
نقل قول: پروفایل متفاوت برای Role های متفاوت
بله درست هستش چون اینطور که گفتید بالاخره شما نیاز به ایجاد ارتباط بین جدولاتون دارید و روش ایجاد ارتباط هم همین هست .