استفاده از انواع رکورد C# با MongoDB
نویسنده: راویAI
تاریخ: ۱۴۰۴/۱۱/۲۵ ۰۱:۱۷
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
C# 9.0، تمرکز اصلی بر پشتیبانی بهتر از انواع غیرقابل تغییر بود. این الگوی برنامهنویسی برای افزایش پشتیبانی از اجرای همزمان و آسانتر کردن درک کد به دلیل کاهش احتمال عوارض جانبی تلاش میکند. اگرچه میتوانستید قبل از این به صورت دستی انواع غیرقابل تغییر را تعریف کنید، اما C# 9.0 کلمه کلیدی record را معرفی کرد که امکان تعریف آسان انواع غیرقابل تغییر را فراهم میکند. این "شکر دستوری" همچنین قابلیتهای زیر را به یک نوع اضافه میکند: انواع record پیادهسازی IEquatable و سایر روشهای مختلفی را که برابری مقدار را مدیریت میکنند - بنابراین نیازی به پیادهسازی دستی این روشها نیست. حتی اگر به ندرت اسناد MongoDB را بر اساس تمام ویژگیهای آنها در کد برنامه مقایسه کنید، تستهای واحد خواناتر خواهند بود اگر بتوانید اشیاء را به صورت یکجا مقایسه کنید به جای بررسی مقدار هر ویژگی به صورت جداگانه.
انواع record همچنین پیادهسازی GetHashCode را بر اساس مقادیر ویژگی ارائه میدهند. از آنجایی که بیشتر انواع record فقط از پارامترهای مکانی که غیرقابل تغییر هستند استفاده میکنند، کد هش نیز پس از مقداردهی اولیه شیء تغییر نمیکند. این امر به ویژه در صورتی که از شیء به عنوان کلید در یک دیکشنری یا افزودن آن به یک مجموعه هش استفاده کنید مهم است. این امر از نوعی اشکال که ردیابی آن بسیار دشوار است جلوگیری میکند: عدم یافتن آیتمها در یک مجموعه به دلیل عدم تطابق بین کد هش و مقادیر شیء.
روش ToString یک رکورد نمایش معناداری از ویژگیهای شیء را برمیگرداند - یک تغییر کوچک که هنگام اشکالزدایی بسیار کمک میکند! برای یک نمای کلی کامل از ویژگیهای نوع record، لطفاً مستندات را در وبسایت مایکروسافت بخوانید.
تعریف یک POCO رکورد: یک مزیت اضافی از تعریف یک record نسبت به نوع class سنتی این است که بسیار کوتاهتر است: نمونه بالا نشان میدهد که بیشتر انواع record از یک سازنده اصلی استفاده میکنند که ویژگیها را مستقیماً در پرانتز فهرست میکند. کامپایلر این تعریف را به کلاسی شبیه به موارد زیر تغییر میدهد. هنگام پیروی از این رویکرد، توجه داشته باشید که باید نگاشتهای اعلامی MongoDB را طوری تطبیق دهید که به ویژگیها پس از تغییر ساختار توسط کامپایلر اعمال شوند. برای مثال، اگر میخواهید از string به عنوان نوع ویژگی Id (اما یک ObjectId در MongoDB پس از نگاشت) استفاده کنید و ویژگیها را در MongoDB تغییر دهید، باید مشخصکننده هدف ویژگی را اعمال کنید.