زمان استفاده از Async در mvc core
سلام
دوستان برای یک ریپازیتوری عمومی متدها رو بصورت Async بنویسم بهتر هست یا بصورت ساده ؟ و در کنترلر فراخوانی رو بصورت async انجام بدم ؟ ممنون
public async Task Add(TEntity entity)
{
await _dbContext.Set<TEntity>().AddAsync(entity);
}
یا
public void Add(TEntity entity)
{
_dbContext.Set<TEntity>().Add(entity);
}
نقل قول: زمان استفاده از Async در mvc core
این لینک ابتدا بخونید
https://barnamenevis.org/showthread.php?547762
و جهت تکمیل لینک بالا
هر زمان یک متدی دارید که درون اون فقط یک لیست و یا بهتر بگم فقط یک کوئری TolistAsync دارید نیاز به تعریف async در تعریف امضای متد نیستیم و همچنین await در بدنه کد نیست
مثلا اگر تابعی دارید بدینصورت
public async Task GetAllAsync()
{
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 در این متد استفاده کنیم کامپایلر هم به ما هشدار میدهد
ولی اگر یک متد داریم که فقط یک tolist دارد و در سایر متدها ی دیگر قابل استفاده میکنیم جهت سربار کمتر امضای متد را بدون async تعریف و await را هم از بدنه کد حذف کنید
و هنگام صدا زدن کافیه قبل از متد await را بکار ببریم
Task List<Person>Get()
{
return dbcontext.persons.ToListAsync();
}
روش صدا زدن
async Task CallMetod()
{
var i=await Get()
}
نقل قول: زمان استفاده از Async در mvc core
خیلی ممنونم
در واقع منظورتون اینه که نتیجه متد get رو بصورت Async برگردونیم مثل این مورد درسته؟
public async Task<IActionResult> Index()
{
var qMenu = await Task.FromResult(_repository.Get());
return View("Index", qMenu);
}
نقل قول: زمان استفاده از Async در mvc core
Task.FromResult زمانی استفاده میکنیم که بخواهیم نتیجه انی یک Task را بگیریم مثلا یک متد async که یک مقدار عددی بر میگرداند
بهتر ست برای متدهای لیستی بدین روش بکار ببریم
public async Task<IActionResult> Index()
{
var qMenu = await _repository.Get();
return View("Index", qMenu);
}
نقل قول: زمان استفاده از Async در mvc core
public async Task<IActionResult> Index()
{
var qMenu = await _repository.Get();
return View("Index", qMenu);
}
ممنون . خب اگه من کد رو به این صورت بنویسم این ارور رو دارم :
'Group' does not contain a definition for 'GetAwaiter' and no extension method 'GetAwaiter' accepting a first argument of type 'Group' could be found (are you missing a using directive or an assembly reference?)
group هم که کلاسی هست که براش ریپازیتوری ساختم
نقل قول: زمان استفاده از Async در mvc core
متد Get به درستی به صورت asyncپیاده سازی نشده
لطفا کدهاشو ارسال کنید
نقل قول: زمان استفاده از Async در mvc core
نقل قول:
نوشته شده توسط
ali_md110
متد Get به درستی به صورت asyncپیاده سازی نشده
مرسی. پست قبلی شما رو اشتباه برداشت کرده بودم متد رو بدون async نوشته بودم . ممنون