PDA

View Full Version : خواندن از دیتابیس بدون لود شدن Relation ها



maxpayn2
پنج شنبه 21 آذر 1398, 11:10 صبح
سلام
توی پروژه ASP.Net Core 2.2 یه کوئری دارم به این شکل

var images = (from i in _context.Images where i.ImageUserId == userId select i).ToListAsync();

وقتی اجرا میشه images رو میاره به همراه تمام اطلاعات مربوط به جدول Users که با جدول Images ارتباط (Relation) داره . میخوام اطلاعات جدول Users رو بی خیال بشه . چی کار باید بکنم ؟

shahab_ksh
جمعه 22 آذر 1398, 01:31 صبح
سلام
توی پروژه ASP.Net Core 2.2 یه کوئری دارم به این شکل

var images = (from i in _context.Images where i.ImageUserId == userId select i).ToListAsync();

وقتی اجرا میشه images رو میاره به همراه تمام اطلاعات مربوط به جدول Users که با جدول Images ارتباط (Relation) داره . میخوام اطلاعات جدول Users رو بی خیال بشه . چی کار باید بکنم ؟



بخش select رو محدود کنید به ستون های دلخواه

maxpayn2
جمعه 22 آذر 1398, 17:19 عصر
بخش select رو محدود کنید به ستون های دلخواه

ممنون . راستش همین کار رو هم کردم ولی وقتی images رو میخوام return کنم میگه نمیتونم به نوع ImageDto که خودم تعریف کردم و همون پراپرتی هایی رو داره که select میکنم ، کانورت کنم چون ناشناخته هستش :متفکر:

baha_ks
پنج شنبه 28 آذر 1398, 20:44 عصر
سلام، میتونید یه viewmodel بنویسید که فقط بخشهایی که میخواد رو واکشی کنه

amir3321
شنبه 19 بهمن 1398, 11:34 صبح
در
کوئری گزینه AsNoTracking رو اضافه کن مشکلت حل میشه

magicmilkom
چهارشنبه 30 بهمن 1398, 00:56 صبح
با سلام.

برای این منظور روش صحیح این هست که برای واکشی اطلاعات به سرور زیاد فشار نیارید.
پیشنهاد می کنم که از ViewModel برای این منظور در پوشه ViewModel هاتون که در لایه ی YourProjectName.Core هست استفاده کنید.

در اینجا شما ViewModel با نام ImageViewModel در پوشه ViewModel هاتون ایجاد کنید.
فیلد هایی از آن Image را که می خواهید واکشی کنید مشخص کنید.
از طریق تعریف در سرویس مورد نظرتون مثلا اینجا IImageService (به عنوان مثال) متودی به صورت زیر عمل کنید:
در IImageService یا همون ریپوزیتوری، متودی برای دریافت ایمیل تعریف کنید:

ImageViewModel GetImageByUserId(int userId)
در ImageService داریم: (فرض رو بر این گذاشتم که شما دو تا پروپرتی ImageName و CreateDate را در ImageViewModel تعریف کردید.)


public ImageViewModel GetImageByUserId(int userId){
return _context.Images.where(i=> i.ImageUserId== userId).select(new ImageViewModel(){
ImageName=c.imageName,
CreateDate=i.createDate
}).ToList();
}