Arash Abbasi
Arash Abbasi
خواندن ۱ دقیقه·۲ سال پیش

انتخاب ستون های دلخواه در Entity Framework Core


در این پست قصد دارم تابعی را معرفی کنم که با کمک اون می توانیم ستونهای دلخواه را از جدول دیتابیس به کمک Entity Framework Core انتخاب کنیم.

ما معمولا برای فیلتر کردن و استفاده از Where در EF مشکلی نداشتیم و می توانستیم به ازای هر تعداد ورودی ای که دریافت میکردیم شرطی را به کوئری اضافه کنیم. به شکل زیر:

اما ما در EF متد یا تابعی را نداریم که با استفاده از آن ستونهای دلخواه مان را فیلتر کنیم و فقط آن ستون ها را از دیتابیس انتخاب کنیم.

برای مثال فرض کنید که ما یک جدولی داریم که 20 ستون دارد و از ما سرویسی خواسته شده که قابلیت دانلود اطلاعات این جدول را در خروجی اکسل از طریق اپلیکیشن ایجاد کنیم. اگر کاربر بخواهد که فقط ستونهایی که نیاز دارد را در خروجی اکسل خود ببیند یک روش این است که کلا استفاده از EF را کنار بگذاریم و به ازای نام ستون هایی که از کاربر دریافت میکنیم Raw SQL بنویسیم و به تعداد ستونهای انتخاب شده آنها را اضافه کنیم.

اما روش دوم و بهتر استفاده از تابعی است که در این پست قصد معرفی کردنش را دارم که به کمک ویژگی های Linq و Lambda Expression پیاده سازی شده است. این تابع کاملا Case insensitive است و درصورتیکه نام پراپرتی موردنظر درست باشد آنرا انتخاب میکند و درغیر این صورت خطا برمیگرداند.

متد موردنظر
متد موردنظر

و به طریق زیر استفاده میشود:

روش استفاده از متد
روش استفاده از متد

پس از اجرای این تابع اگر کوئری ساخته شده توسط EF Core را همانطور که در کنسول این پروژه چاپ کرده ام (یا از طریق SQL Profiler) مشاهده کنید متوجه میشوید که فقط ستونهای خواسته شده در Select statement جنریت شده است.

درخواست ورودی
درخواست ورودی
کوئری جنریت شده
کوئری جنریت شده
مپ شدن ستونهای خواسته شده به مدل و خروجی نهایی
مپ شدن ستونهای خواسته شده به مدل و خروجی نهایی


لینک پروژه



پایان

entity framework corenetnetcoresqlserversql
توسعه دهنده نرم افزار ، مشتاق و آماده یادگیری مطالب جدید در حوزه های مرتبط
شاید از این پست‌ها خوشتان بیاید