مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

mounes58

عضویت از 1394/06/06

رابطه چند به چند

  • سه شنبه 14 مهر 1394
  • 19:29
تشکر میکنم

سلام

من در یک برنامه با استفاده از Entity framework code first ، مدل های مربوط به کاربر، نقش و سطح دسترسی را با رابطه چند به چند ایجاد کرده ام.

یعنی جدول کاربر و نقش با هم رابطه چند به چند دارند و جدول نقش و سطح دسترسی هم با هم رابطه چند به چند دارند.

در جدول کاربر یک کالکشن virtual از نقش ها دارم و در جدول نقش هم دو کالکشن virtual از کاربران و سطوح دسترسی.

خود Entity Framework برای پیاده سازی این حالت جداول واسطی درست می کند که آنها را UserInRole و PermissionInRole می نامد.

زمانی که برای بار اول برنامه را اجرا می کنم و در این دو جدول مقداری وجود ندارد.

در زمان افزودن نقش به کاربر یا زمان افزودن سطح دسترسی به نقش ، پیغام خطایی ظاهر می شود و می گوید

An exception of type 'System.NullReferenceException' occurred in MyProgram.dll but was not handled in user code

Additional information: Object reference not set to an instance of an object.

پیغام خطا به دلیل عدم وجود داده در جداول UserInRole و PermissionInRole است.

زمانی که دستی در این دو جدول یک رکورد ایجاد می کنم، برنامه بدون مشکل اجرا می شود و می توانم هر چند کاربر را به هر چند نقش یا هر چندد سطح دسترسی را به هرچند نقش که می خواهم اضافه کنم.

برای حل این مشکل میشه راه حلی پیشنهاد بدین؟

ممنون می شم.

پاسخ های این پرسش

تعداد پاسخ ها : 2 پاسخ
کاربر سایت

اصغر

عضویت از 1394/03/16

  • پنجشنبه 16 مهر 1394
  • 09:21

سلام 

اگر خطای شما در اپلیکیشن نبود داده اولیه است ، در EntityFramework Code First با استفاده از متد Seed میتونید مقدار های اولیه را برای این جداول قرار دهید.

کاربر سایت

mounes58

عضویت از 1394/06/06

  • پنجشنبه 16 مهر 1394
  • 17:54
سلام. ممنون از پاسختون. اما اشکال برنامه در داده های اولیه نیست. داخل seed چند کاربر، نقش و سطح دسترسی رو به جداول مربوطه اضافه کردم ولی وقتی میخوام نقشی به کاربر اضافه کنم، خطا میگیره! فرض کنید oRole نقشی است که از بانک اطلاعاتی پیدا کردم، oUser هم کاربری است که از دیتابیس آوردم، وقتی مینویسم oUser.Roles.Add(oRole) خطا میگیره و میگه کالکشن Roles نال است. در حالی که در user کالکشن Roles را virtual تعریف کردم. نمیدونم مشکل کجاست!
کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)