خانه زبان های برنامه نویسی نکات EF#1 – چگونه به کمک stub Entityها از ارسال کوئری به دیتابیس جلوگیری کنیم؟ زبان های برنامه نویسی EF Core نوشته شده توسط: علیرضا ارومند تاریخ انتشار: ۲۲ تیر ۱۳۹۴ آخرین بروزرسانی: ۱۷ تیر ۱۴۰۳ زمان مطالعه: 10 دقیقه ۳ (۲) stub Entity چیست؟ به زبان ساده اگر یک نمونه از یک Entityدر برنامه خود ایجاد کنیم و به شناسه آن مقدار دهی کنیم در اصطلاحا یک stub Entity ایجاد کرده ایم. Category c = new Category {ID = 5}; چه زمانی stub Entity ها به درد ما میخورند؟ هر زمانی که شما تنها به یک نمونه از شی نیاز داشته باشید و تنها با شناسه آن کار داشته باشید نه با همه اطلاعات آن، stub Entityها وارد عمل میشوند. اگر بهتر بخواهیم بگوییم به کمک stub Entity ها شما از سربار اضافه روی سرور خود جلوگیری میکنید. سناریو اول ایجاد یک رابطه به کمک stub Entity به جرات میتونم بگم یکی از پرکاربردترین سناریوهای استفاده از stub Entityها همین مثال هست. فرض کنید یک کالای جدید میخواهید در پایگاه داده ثبت کنید و میدانید که شناسه دسته بندی این کالا برابر با عدد ۵ میباشد. به صورت پیش فرض بسیاری از برنامه نویسان کار زیر را انجام می دهند Product p = new Product { Name = “گوشی موبایل تست”, Category = ctx.Categories.First(c => c.ID == 5) }; ctx.AddToProducts(p); ctx.SaveChanges(); در این مثال مشاهده میکنید که تنها کافی است یک بار برای ذخیره محصول به سراغ پایگاه داده برویم و نیازی به خواندن مقدار دسته بندی از پایگاه داده نیست. سناریو دوم حذف یک موجودیت یکی دیگر از مواقعی که معمولا با اینکه تنها داشتن شناسه موجودیت کفایت میکند اما برنامه نویس ها مجبور هستند اطلاعات را بدون اینکه به آن نیاز داشته باشند از پایگاه داده واکشی کنند، هنگام حذف موجودیت است. Category category = ctx.Categories.First(c => c.ID == 5); ctx.DeleteObject(category); ctx.SaveChanges(); اما با استفاده صحیح از stub Entity نیاز به خواندن موجودیتی که شناسه آن را داریم و سپس حذف آن از پایگاه داده مرتفع میشود و تنها با داشتن شناسه امکان حذف موجودیت از پایگاه داده برای ما فراهم می شود. Category category = new Category { ID = 5 }; ctx.AttachTo(“Categories”,category); ctx.DeleteObject(category); ctx.SaveChanges(); سناریو سوم به روز رسانی موجودیت یکی دیگر از مواردی که معمولا نیاز به واکشی و سپس ثبت موجودیت داریم هنگام ویرایش موجودیت است. اما در صورتی که کلیه اطلاعات مورد نیاز را داشته باشیم به کمک stub Entity میتوانیم از رفت و آمد بیهوده به پایگاه داده جلوگیری کنیم و تنها با یک بار ارسال داده به پایگاه داده کار خود را انجام دهیم. Person person = new Person{ ID = 25, Firstname = “علیرضا”, Surname = “ارومند” }; ctx.AttachTo(“People”, person); ctx.SaveChanges(); خلاصه موارد ذکر شده در بالا از پرکاربرد ترین سناریوهای استفاده از stub Entityها بود در صورتی که به کارهای روزمره خود نگاهی بیاندازید موارد بسیاری را خواهید یافت که بی دلیل بار بر روی سرور گذاشته میشود و به کمک stub Entityها میتوان این بار اضافی را حذف کرد. چه رتبه ای میدهید؟ میانگین ۳ / ۵. از مجموع ۲ اولین نفر باش معرفی نویسنده مقالات 24 مقاله توسط این نویسنده محصولات 43 دوره توسط این نویسنده علیرضا ارومند علیرضا ارومند به عنوان Product Manager شرکت داتین (وابسته به فناپ) در حوزه پروژههای بانکی فعال است.او همچنین مدرس و Technical Manager پروژههای نیک آموز می باشد از دیگر تخصص های او میتوان به: تولید فریمورک برنامه نویسی فوق العاده حرفهای با مدیریت بیش از 1 میلیون تراکنش در ثانیه، همکاری با تیم توسعه شرکت ارتباط فردا (بانک آینده)، مشاور فنی شرکت توسعه رفاه پردیس (بانک رفاه)، مدیر فنی خبرگزاری نسیم، سخنران تنها همایش مورد تایید مایکروسافت در خاورمیانه در حوزه ASP.NET Core، مدیر فنی خبرگزاری بین المللی پیامکوتاه نسیم (برنده جشنواره وب ایران)، مدرس دوره های Dot Net ، ASP.NET در نیک آموز، همکاری با تیم توسعه شرکت ارتباط فردا معرفی محصول علیرضا ارومند دوره Full Stack .NET Developer 3.900.000 تومان مقالات مرتبط ۰۹ شهریور زبان های برنامه نویسی چگونه میتوان Blazor را برای ساخت برنامههای (PWA (App Web Progressive استفاده کرد؟ تیم فنی نیک آموز ۰۸ شهریور زبان های برنامه نویسی Eloquent در لاراول و جادوی کاربردیاش تیم فنی نیک آموز ۰۶ شهریور زبان های برنامه نویسی Interface در PHP تیم فنی نیک آموز ۰۶ شهریور زبان های برنامه نویسی پکیج در زبان گو؛ هر آن چیزی که باید بدانید! تیم فنی نیک آموز دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ محموو ۲۱ / ۰۹ / ۹۸ - ۰۵:۱۴ سلام کدها خیلی مفید بود ممنون پاسخ به دیدگاه محموو ۲۱ / ۰۹ / ۹۸ - ۰۵:۱۴ سلام کدها خیلی مفید بود ممنون پاسخ به دیدگاه mehdi $o$er ۲۵ / ۱۲ / ۹۴ - ۱۰:۱۶ دوست عزیز محمد راست میگن کد ها به چه زبانی نوشته شدن ؟ پاسخ به دیدگاه رضا نصیری ۲۶ / ۱۲ / ۹۷ - ۱۲:۵۷ سلام. سی شارپ پاسخ به دیدگاه mohammad ۱۸ / ۰۷ / ۹۴ - ۰۹:۴۶ لطفا ذکر کنید کدها به چه زبانی نوشته شدن؟ پاسخ به دیدگاه mehdi ۱۱ / ۰۷ / ۹۴ - ۰۲:۵۹ سلامممنون برای مطلب خوبتون پاسخ به دیدگاه مدیا مهربانیان ۲۳ / ۰۴ / ۹۴ - ۰۳:۳۱ با سلام تشکر فراوان از مطالب مفیدتان که در اختیار ما قرار میدهید. پاسخ به دیدگاه