نکات EF#1 – چگونه به کمک stub Entityها از ارسال کوئری به دیتابیس جلوگیری کنیم؟

نکات EF#1 – چگونه به کمک stub Entityها از ارسال کوئری به دیتابیس جلوگیری کنیم؟

نوشته شده توسط: علیرضا ارومند
تاریخ انتشار: ۲۲ تیر ۱۳۹۴
آخرین بروزرسانی: ۱۷ تیر ۱۴۰۳
زمان مطالعه: 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ها میتوان این بار اضافی را حذف کرد.

چه رتبه ای می‌دهید؟

میانگین ۳ / ۵. از مجموع ۲

اولین نفر باش

title sign
معرفی نویسنده
علیرضا ارومند
مقالات
23 مقاله توسط این نویسنده
محصولات
43 دوره توسط این نویسنده
علیرضا ارومند

علیرضا ارومند به عنوان Product Manager شرکت داتین (وابسته به فناپ) در حوزه پروژه‌های بانکی فعال است.او همچنین مدرس و Technical Manager پروژه‌های نیک آموز می باشد از دیگر تخصص های او میتوان به: تولید فریمورک برنامه نویسی فوق العاده حرفه‌ای با مدیریت بیش از 1 میلیون تراکنش در ثانیه، همکاری با تیم توسعه شرکت ارتباط فردا (بانک آینده)، مشاور فنی شرکت توسعه رفاه پردیس (بانک رفاه)، مدیر فنی خبرگزاری نسیم، سخنران تنها همایش مورد تایید مایکروسافت در خاورمیانه در حوزه ASP.NET Core، مدیر فنی خبرگزاری بین المللی پیام‌کوتاه نسیم (برنده جشنواره وب ایران)، مدرس دوره های Dot Net ، ASP.NET در نیک آموز، همکاری با تیم توسعه شرکت ارتباط فردا

title sign
معرفی محصول
title sign
دیدگاه کاربران

    • سلام
      کدها خیلی مفید بود ممنون

    • سلام
      کدها خیلی مفید بود ممنون

    •   دوست عزیز محمد راست میگن کد ها به چه زبانی نوشته شدن ؟

    •    لطفا ذکر کنید کدها به چه زبانی نوشته شدن؟

    •   سلام
      ممنون برای مطلب خوبتون

    •  با سلام

      تشکر فراوان از مطالب مفیدتان که در اختیار ما قرار میدهید.