سلام و عرض ادب فراوان
قبلا سوالی پرسیده بودم اما دقت نکرده بودم که در قسمت نظرات نباید سوال بپرسیم(عذر خواهم)
سوالم اینه که چطوری میشه توی GenericRepositories به متد Get که توی آموزش کدنویسی کردید بیام نام ستونهایی که میخوایم رو ارسال کنیم.خیلی پیش میاد که از یه جدول مثلا ما فقط آیدی و مثلا نام و نام خانوادگی شخص رو لازم داریم نه بیشتر
اگه میشه این رو راهنمایی کنید
پیشاپیش سپاس از بررسی و پاسخ شما
سلام
این مورد رو با Linq نمیشه پیاده سازی کرد که دانیامیک خروجی بگیرید
میتونید از Dapper برای این بخش ها استفاده کنید
سلام مجدد و ممنون بابت پاسختون
اگه بخواهیم از روشی که فرمودید استفاده کنیم برای زمانی خوبه که ما میدونیم مثلا قراره همیشه ستون های خاصی رو نشون بدیم
اما اگه قرار باشه مثلا در فرم جستجو مشتریان 5 تا فیلد ها
در فرم جستجوی سریع 3 تا از فیلدها و به همین ترتیب در جاهای دیگه تعداد فیلدها متفاوت باشه که سخته روش پیشنهادی شما استفاده کرد
یعنی واقعا مثل اون قسمت Where و Order by نمیشه اسامی فیلدها رو مشخص کرد؟
توی نت زیاد سرچ کردم و یه چیزی توی متد Get اضافه کرده بود به نام Selector که میشد نام فیلدها رو مشخص کرد مثل نمونه زیر
IEnumerable<TEntity> Get(Expression<Func<TEntity, bool>> where = null,
میتونید برای اینجور مواقع کوئری Sql اسجاد کنید و where رو داینامیک پر کنید و با EF روی بانک اجراکنید
ولی در خروجی به مشکل میخورید که میتونید از یه نوع ViewModel باشه شامل فیلدهای مورد نظر
کوئری داینامیک است ولی خروجی که یکسان است
سلام و وقت بخیر مجدد
اینم کدی که میخواستم با دستورات LINQ اینجا قرار میدم واسه دوستانی که مثل من دنبالش بودند
این خط کد تعریفش هست
IEnumerable<TResult> Get<TResult>(Expression<Func<TEntity, TResult>> selector,
int skip = 0, int top = 0,
Expression<Func<TEntity, bool>> where = null,
Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
string includes = null);
حالا دیگه میتونیم خروجی دلخواه رو بگیریم
منتها selector رو نشد که پیشفرض null بدم واسه همین متد فوق رو یبار با selector و یبار هم بدون selector نوشتم که هردو حالت رو داشته باشم
اینم نمونه فراخوانی تابع فوق
var myData=unitOfWork.CustomerR.Get(s=>new{s.CustomerId,s.FirstName,s.LastName,...});
سپاس فراوان از TopLearn