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

نام تاپیک: کوئری زدن بوسیله Task ها در EntityFramwork

Threaded View

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

    نقل قول: کوئری زدن بوسیله Task ها در EntityFramwork

    نقل قول نوشته شده توسط nunegandom مشاهده تاپیک
    با سلام

    نکته دوم اینکه فکر میکنم آقای ali_md110 اشتباه میکنند و شما کد رو صحیح نوشتید.
            private async Task<IEnumerable<Pattern>> GetPatterns()        {
    return await _pattern.GetAll().Select(o => new Pattern { PatternName = o.PatternName, PatternId = o.PatternId }).ToListAsync();
    }

                model.Pattern = new SelectList(await GetPatterns());

    من اشتباه نکردم دوست من
    شما منظور من رو صحیح متوجه نشدید
    کدی که دوستمون در سوالشون مطرج کردند غلط نیست جوابگو هست ولی سربار دارد


    و در جواب سوال دوم شما BarnamenevisJavan
    بله مفهوم async رو میدونم متاسفانه فکر میکردم یا حداقل راجبش فکر نکرده بودم که باعث کاهش سرعت و راندمان برنامه میشه، حالا این وسط یه چندتا چیز دیگه هستش برخی موقع ها میایم از Task استفاده میکنیم خشک و خالی، بعضی وقت ها داخل همین Task بصورت Async , Await استفاده میکنیم، اگر اطلاعی راجب این قضیه و نحوه کارکردش دارین ممنون میشم ازتون
    دقیقا من جواب شما رو در پست قبلی دادم

    هر زمان یک متدی دارید که درون اون فقط یک لیست و یا بهتر بگم یک کوئری tolistAsync دارید نیاز به تعریف async در تعریف امضای متد و await در بدنه کد نیست
    مثل تابع اولی خودتون
    مثلا اگر تابعی دارید بدینصورت


    public async Task GetAllUserAsync()
    {
    var list=await dbcontext.person.ToListAsync();
    var list2=await dbcontext.persondetails.ToListAsync();
    foreach(var p in list)
    var li=list2.first(x=> x.id=p.id);
    }


    چون در این تابع از جدول person واکشی کردیم وبلافاصله به نتیجه اون در همین متد نیاز داریم مجبوریم از async و await در این متد استفاده کنیم کامپایلر هم به ما هشدار میدهد

    برای صدا زدن بدینصورت عمل نکنید

    GetAllUserAsync.waite()

    صحیحش بدینصورت هست

    await GetAllUserAsync();

    ولی اگر یک متد داریم که فقط یک tolist دارد و در سایر متدها ی دیگر قابل استفاده میکنیم جهت سربار کمتر امضای متد را بدون async و await را هم از بدنه کد حذف کنید
    و هنگام صدا زدن کافیه قبل از متد await را بکار ببریم

    Task List<Person>Get()
    {
    return dbcontext.persons.ToListAsync();
    }


    async Task CallMetod()
    {
    var i=await Get()
    }
    آخرین ویرایش به وسیله ali_md110 : دوشنبه 14 خرداد 1397 در 16:01 عصر

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

  1. سوال: روش کوئری زدن در بازه های های زمانی دلخواه
    نوشته شده توسط a.golzar66 در بخش ASP.NET MVC
    پاسخ: 1
    آخرین پست: دوشنبه 12 تیر 1396, 12:25 عصر
  2. پاسخ: 1
    آخرین پست: چهارشنبه 04 آذر 1394, 08:59 صبح
  3. پاسخ: 2
    آخرین پست: شنبه 09 آبان 1394, 11:29 صبح
  4. کوئری زدن از یک جدول در اکسس
    نوشته شده توسط alirezaroohi در بخش C#‎‎
    پاسخ: 2
    آخرین پست: جمعه 23 آبان 1393, 19:48 عصر
  5. مشکل در کوئری زدن
    نوشته شده توسط 2020s1371 در بخش برنامه نویسی در محیط QT و هم خانواده هایش
    پاسخ: 5
    آخرین پست: شنبه 15 شهریور 1393, 22:54 عصر

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

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