У меня есть метод действий, который вставляет некоторые данные в базу данных. Я пытаюсь сделать его асинхронным. Код выглядит следующим образом: метод вставкаАсинхронные методы действия с синхронными вызовами API
public async Task<ActionResult> Create([DataSourceRequest] DataSourceRequest request, MyClass model)
{
return await Task.Run(() =>
{
if (model != null && ModelState.IsValid)
{
try
{
repository.Insert(model);
anotherSyncCall(model);
}
catch { ModelState.AddModelError("", "Error"); }
}
return Json(new[] { model }.ToDataSourceResult(request, ModelState));
});
}
Repository является синхронным, я должен сделать это асинхронно, чтобы сделать этот метод действий асинхронным?
Repository Код вставки:
private EFDbContext context;
public Repository()
{
context = new EFDbContext(Authentication.GetConnectionClaim);
}
//......
public void Insert(T entity)
{
context.Set<T>().Add(entity);
context.SaveChanges();
}
Эта картина таймингов, при повторных запросах.
Как вы можете видеть, что они работают синхронно. Я уверен, что мои вызовы Ajax на стороне клиента являются асинхронными, потому что все запросы делаются сразу, и они получают ответы со временем.
UPDATE
Это код, который я тестирую мое приложение с:
for (var i = 0; i < 100; i++) {
$.ajax({
method: 'post',
url: 'http://192.168.1.8/xx/xx/Read',
data: 'sort=&page=1&pageSize=10&group=&filter='
});
}
И я попытался установить SessionState
в Readonly
как предложено @Dan но идентификатор не изменился таймингов.
На второй мысли, может быть, это ToDataSourceResult
метод расширения Кендо UI, который вызывает эту проблему? Но я делаю разные Task
для этого action method
в любом случае.
Возможно, стоит опубликовать код на стороне клиента. –
Для этого теста это простой вызов JQuery Ajax в цикле! Но для функциональности я использую Kendo Grid (для этого вы не написали пользовательские призы Ajax). – Akbari
Что такое 'repo'? Как выглядит код, все должно быть асинхронным, как есть. Но я думаю, что 'repo.Insert' выполняет некоторую синхронизацию, которая приводит к наблюдаемому времени. –