💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ حمیدرضا جلیلی
دلیل استفاده از Icollection
جامعه ASP.NET ایجاد شده در ۱۳ بهمن ۱۴۰۱

سلام چرا از Icollection<> استفاده کردیم و چرا از list<> و یا حتی IEnumerable<> استفاده نکردیم؟

سلام،

ترتیب مشتق شدن این سه رابط به این شکله:

IEnumerable > ICollection > IList --> List

هر کدوم قابلیت هایی دارند که فرزندشون یک سری قابلیت‌های دیگر به قبلی‌ها اضافه کرده.

اگر لیستی داشتید که فقط نیاز به پیمایش داشت و تغییری در لیست ایجاد نمیشد میتونید از IEnumerable استفاده کنید. یعنی فقط ReadOnly باشه مثل لیستی که از دیتابیس واکشی میکنید و این لیست پیمایش میشه و در قسمتی نمایش داده میشه.

در EF برای پیاده سازی رابطه موجودیت‌ها معمولا از ICollection استفاده میشه. (قابلیت Add)

IList فرزند ICollection هست بنابراین هم قابلیت پرنت رو داره و یه سری قابلیت‌های اضافه بر قبلی‌ها داره. منتها برای جلوگیری از سربار اضافی و عدم استفاده از قابلیت‌های دیگه از ICollection استفاده میشه. باید ببینید در سناریویی که پیاده میکنید به چه امکاناتی نیاز دارید.

کلاس List قابلیت ساختن آبجکت رو داره و رابط IList رو implement کرده. یعنی در خودش سه کلاس دیگرو داره.

این نمونه رو هم میتونید ببینید که one-to-many رو با List پیاده کرده و many-to-many رو با ICollection.

بهترین پاسخ
محسن موحد ۱۵ بهمن ۱۴۰۱، ۰۰:۲۳