با سلام
ممنون میشم با این توضیحات می دم من رو در مدلسازی راهنمایی کنید : (از نام مدل ها به صورت فرضی استفاده شده)
1- جدول User
2- جدول Role
3- جدول User با Role ارتباط چند به چند باید داشته باشند ( هر کاربر دارای چندین نقش و هر نقش هم چندین کاربر داره)
4- کاربری که نقش بهش تعلق گرفت می تونه به عنوان Parent یک کاربر دیگه که بهش نقش داده شده، باشه (یعنی جدول join با خودش ارتباط چند به چند داره)
5- در ضمن Parent می تونه تغییر پیدا کنه در این صورت من فقط در جدول رابط می تونم رکورد جدید رو حفظ کنم ، چون که RoleId و UserId در این جدول که ارتباط چند به چند رو بین جداول Role و User ایجاد می کنه کلید خواهند بود.
برای درک بهتر مثال هایی رو ذکر می کنم.
کاربر اول ==> user1 با userId=1 -- کاربر دوم ==> user2 با userId=2 -- کاربر سوم==> user3 با userId=3
نقش اول==> role1 با roleId=1 -- نقش دوم ==> role2 با roleId=2 -- نقش سوم==> role3 با roleId=3
حالا فرض کنید user1 با نقش role1 والد یا parent کاربر user2 با نقش role2 باشه و مشابه این داستان موردهای دیگه هم میتونه اتفاق بیفته که نشون جدول واسط با خودش ارتباط چند به چند داره
سوای اینها من نیاز دارم که اگه parent که کاربر همراه نقشش عوض شد ، همچنان اطلاعات قبلی رو در جدول داشته باشم که به علت کلید بودن RoleId و UserId ممکن نیست.
چطوری می تونم این مدل رو پیاده سازی کنم؟
این مدل رو میخوای برروی EF Code First پیاده کنید ؟
بله
یکبار پیاده کردم 80% پروژه هم پیش رفته بود که هنگامی که خواستم سوابق رو در جدول واسط User و Role داشته باشم به مشکل خوردم
این رابطه در EF Code First توسط Fluent API صورت میگیرد، و جدول واسط مورد نیاز به صورت خودکار توسط EF ایجاد می شود:
Configure Many-to-Many Relationship in Code First
c# - How to configure many to many relationship using entity framework fluent API - Stack Overflow
دوست عزیز شما یک جدول بسازید بفرض:
با نام Groups
یک جدول بسازید با نام Users
حالا یک جدول بسازید با نام Rols که دوتا فیلد داشته باشه - UserID - GroupID
حالا ارتباط چند به چند رو ثبت کنید برید جلو.
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)