نمایش نتایج 1 تا 4 از 4

نام تاپیک: async کردن چند IQueryable در LINQ

  1. #1
    کاربر دائمی آواتار nunegandom
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    الان اصفهان
    سن
    33
    پست
    828

    async کردن چند IQueryable در LINQ

    سلام من چند تا query دارم که به صورت IQueryable هستند ، اگر بخوام همین ها هر ۳ تا شون با یک درخواست و به صورت Async اجرا بشن چطوری میشه؟

  2. #2
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: async کردن چند IQueryable در LINQ

    از این درخواست ها در Action استفاده میشه یا کاربرد دیگری دارد؟
    همه این کوئری ها در نهایت در یک ویو نمایش داده میشود؟
    اگر همگی در یک اکشن متد هست که ساده هست کافیه اکشن بصورت async تغریف کنید و از یک ویومدل که شامل چند لیست هست برای ارسال همه کوئری ها به سمت ویو در اون اکشن بهره ببرید
    و یک نکته چون IQueryable یک درخواست خام هست و به دیتابیس ارسال نشده جهت استفاده در نهایت باید تبدیل به یک Tolist شود
    وقتی یکی یا همه این کوئری ها تبدیل به Tolist شود فقط یکی از این چند کوئری های شما میتواند به عنوان خروجی متد شما باشد

  3. #3
    کاربر دائمی آواتار nunegandom
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    الان اصفهان
    سن
    33
    پست
    828

    نقل قول: async کردن چند IQueryable در LINQ

    خیلی ممنون از پاسختون، در اکشن استفاده میشه
    همه به یک ویو ارسال میشه
    var model = new AdminWidgetModel();                model.ContactList = await db.Contacts.OrderByDescending(y => y.id).Where(y => y.Status == (int)ContactStatus.New).Select(x => new ContactWidgetModel { Message = x.Message, Subject = x.Subject, Time = x.Date }).Skip(0).Take(5).ToListAsync();
    model.FactorList = await db.factors.OrderByDescending(y => y.id)
    .Where(y => y.FactorStatus == (int)FactorStatus.PayedService || y.FactorStatus == (int)FactorStatus.UnRegisteredUserPayed || y.FactorStatus == (int)FactorStatus.LoginPayeWithoutWallet)
    .Select(x => new FactorWidgetModel { Name = x.service_name, Price = x.price_total }).Skip(0).Take(5).ToListAsync();
    model.TicketList = await db.Contacts.OrderByDescending(y => y.id).Where(y => y.Status == (int)TicketStatus.CustomerReplayed).Select(x => new TicketWidgetModel { Subject = x.Subject, Message = x.Message }).Skip(0).Take(5).ToListAsync();
    return View(model);

    ۳ تا کوئری هست و خوب طبق چیزایی که من میدونم با ToList از حالت Queryable در میاد و میشه IEnumerable که اجرا میشه
    راهی هست حالا این ۳ تا توی یک درخواست برن سمت سرور یعنی با یک Connection؟ یعنی این ۳ تا فقط یک کانکشن برقرار کنن

  4. #4
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: async کردن چند IQueryable در LINQ

    در این مثال شما که فقط یک کانکشن هست
    اگر منظور شما اینه که سه تا کوئری ارسال نشه
    شما چاره ای ندارید چون درخواست های شما هرکدام از جداول متفاوت هستند و نتایج مختلفی دارند

    ولی اگر این هست ک 3 تا کانکشن به دیتابیس زده نشود این میتونه راه حل داشته باشه
    بهترینش UnitOfWork هست

تاپیک های مشابه

  1. join کردن چند جدول در Linq
    نوشته شده توسط manit44 در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 3
    آخرین پست: چهارشنبه 05 آذر 1393, 12:27 عصر
  2. سوال: اشكال در آپديت كردن كليد خارجي در LINQ
    نوشته شده توسط amirniknam در بخش C#‎‎
    پاسخ: 7
    آخرین پست: شنبه 25 خرداد 1387, 07:14 صبح
  3. اسکن کردن چند صفحه در C#‎
    نوشته شده توسط mojtabamansouri در بخش C#‎‎
    پاسخ: 2
    آخرین پست: چهارشنبه 17 بهمن 1386, 12:43 عصر
  4. جمع کردن چند فایل در یک فایل
    نوشته شده توسط null در بخش C#‎‎
    پاسخ: 5
    آخرین پست: سه شنبه 11 اسفند 1383, 08:23 صبح

قوانین ایجاد تاپیک در تالار

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