PDA

View Full Version : سوال: EF Code first many-to-many relation



ohh_mid
سه شنبه 17 مرداد 1391, 17:19 عصر
سلام
در صورتی که 2 Entity داشته باشم که ارتباط بین این دو به صورت Man-to-many باشه مثلا ارتباط بین User و Role
می خوام بدونم ارتباط بین این 2 Entity به چه صورت باید ذخیره بشه ؟
شاید یک راه این باشه که یک Entity واسط برای ارتباط این دو Entity در نظر گرفته بشه و بعد از ذخیره سازی یکی از این 2 entity فیلدهای entity واسط رو مقدار دهی کنیم و بعد این ارتباط رو ذخیره کنیم اما به نظرم این راه خوبی نیست
کسی راه حل دیگه ای سراغ داشته باشه خوشحال میشم که یاد بگیرم .

ممنون

mze666
سه شنبه 17 مرداد 1391, 19:52 عصر
سلام

یه مثال براتون درست کردم: https://www.dropbox.com/s/3aw3id5d1sm51x0/UserRoleSample.zip

ohh_mid
چهارشنبه 18 مرداد 1391, 00:12 صبح
با تشکر از شما . اما مثالی که شما ارسال کردید فقط ثبت اطلاعات کاربر و نقش می باشد . در صورتی که بخواهید به فرض یکی از کاربران مثال شما چند نقش داشته باشد به چه صورت است ؟
همانطور که گفتم یک راه حل این هست که Entity واسط در نظر بگیرم و پس از ثبت اطلاعات User ، از مقدار برگشتی Id کاربر را بدست اوریم و Id نقش هایی هم که به کاربر میخواهیم انتصاب کنیم اطلاعات مربوط به ارتباط بین نقش و کاربر در جدول UserRole ذخیره کنیم .
اگر راه حل دیگری وجود داشته باشد خوشحال می شوم آشنا شوم .

با تشکر از وقتی که گذاشتید

mze666
چهارشنبه 18 مرداد 1391, 00:46 صبح
دوست عزیز اون تیبل UserRoles رو هم میسازه و شما باید تو اون تیبل اطلاعات رو وارد کنید که برابر UserId و RoleId هستش.

tooraj_azizi_1035
چهارشنبه 18 مرداد 1391, 12:14 عصر
سلام
ببینید یک ارتباط Many to Many دارای یک جدول سوم یا جدول واسط هست که FK هر دو جدول دیگر در اون قرار می گیره وقتی شما از روی این سه جدول مدل می سازی EF جدول رابط رو حذف می کنه و فقط دو Entity می بینید. با عمل Mapping اطلاعات در جدول سوم هر در پشت صحنه (یعنی در SQL) ذخیره میشه.