Why does ASP.NET Core API scaffold [HttpGet] synchronous, but the other actions async?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
Im using ASP.NET Core 2.1 and Controller scaffolding with EntityFrameworkCore.
The actions generated look like this:
[HttpGet]
public IEnumerable<Todo> GetTodos()
{
return _context.Todos;
}
// GET: api/Todos/5
[HttpGet("{id}")]
public async Task<IActionResult> GetTodo([FromRoute] int? id)
{
...
var todo = await _context.Todos.FindAsync(id);
...
return Ok(todo);
}
Can someone explain why the GetTodos() Action uses sync execution and when I should change it to an async action.
Lets say I only want to return a Dto Object:
// GET: api/Todos
[HttpGet]
public IEnumerable<TodoDto> GetTodos()
{
return _context.Todos.Select(x => new TodoDto() { Title = x.Title });
}
Should I then async cast to a List?
// GET: api/Todos
[HttpGet]
public Task<List<TodoDto>> GetTodos()
{
return _context.Todos.Select(x => new TodoDto() { Title = x.Title }).ToListAsync();
}
c# asynchronous task
add a comment |
Im using ASP.NET Core 2.1 and Controller scaffolding with EntityFrameworkCore.
The actions generated look like this:
[HttpGet]
public IEnumerable<Todo> GetTodos()
{
return _context.Todos;
}
// GET: api/Todos/5
[HttpGet("{id}")]
public async Task<IActionResult> GetTodo([FromRoute] int? id)
{
...
var todo = await _context.Todos.FindAsync(id);
...
return Ok(todo);
}
Can someone explain why the GetTodos() Action uses sync execution and when I should change it to an async action.
Lets say I only want to return a Dto Object:
// GET: api/Todos
[HttpGet]
public IEnumerable<TodoDto> GetTodos()
{
return _context.Todos.Select(x => new TodoDto() { Title = x.Title });
}
Should I then async cast to a List?
// GET: api/Todos
[HttpGet]
public Task<List<TodoDto>> GetTodos()
{
return _context.Todos.Select(x => new TodoDto() { Title = x.Title }).ToListAsync();
}
c# asynchronous task
Probably as examples of what's possible?
– John
Nov 23 '18 at 11:25
or you can useTask.FromResult(...)
– ASpirin
Nov 23 '18 at 11:26
yes its just an example change to return task
– saj
Nov 23 '18 at 13:38
add a comment |
Im using ASP.NET Core 2.1 and Controller scaffolding with EntityFrameworkCore.
The actions generated look like this:
[HttpGet]
public IEnumerable<Todo> GetTodos()
{
return _context.Todos;
}
// GET: api/Todos/5
[HttpGet("{id}")]
public async Task<IActionResult> GetTodo([FromRoute] int? id)
{
...
var todo = await _context.Todos.FindAsync(id);
...
return Ok(todo);
}
Can someone explain why the GetTodos() Action uses sync execution and when I should change it to an async action.
Lets say I only want to return a Dto Object:
// GET: api/Todos
[HttpGet]
public IEnumerable<TodoDto> GetTodos()
{
return _context.Todos.Select(x => new TodoDto() { Title = x.Title });
}
Should I then async cast to a List?
// GET: api/Todos
[HttpGet]
public Task<List<TodoDto>> GetTodos()
{
return _context.Todos.Select(x => new TodoDto() { Title = x.Title }).ToListAsync();
}
c# asynchronous task
Im using ASP.NET Core 2.1 and Controller scaffolding with EntityFrameworkCore.
The actions generated look like this:
[HttpGet]
public IEnumerable<Todo> GetTodos()
{
return _context.Todos;
}
// GET: api/Todos/5
[HttpGet("{id}")]
public async Task<IActionResult> GetTodo([FromRoute] int? id)
{
...
var todo = await _context.Todos.FindAsync(id);
...
return Ok(todo);
}
Can someone explain why the GetTodos() Action uses sync execution and when I should change it to an async action.
Lets say I only want to return a Dto Object:
// GET: api/Todos
[HttpGet]
public IEnumerable<TodoDto> GetTodos()
{
return _context.Todos.Select(x => new TodoDto() { Title = x.Title });
}
Should I then async cast to a List?
// GET: api/Todos
[HttpGet]
public Task<List<TodoDto>> GetTodos()
{
return _context.Todos.Select(x => new TodoDto() { Title = x.Title }).ToListAsync();
}
c# asynchronous task
c# asynchronous task
edited Nov 24 '18 at 4:11
Foo
1
1
asked Nov 23 '18 at 11:21
SubZeroSubZero
62
62
Probably as examples of what's possible?
– John
Nov 23 '18 at 11:25
or you can useTask.FromResult(...)
– ASpirin
Nov 23 '18 at 11:26
yes its just an example change to return task
– saj
Nov 23 '18 at 13:38
add a comment |
Probably as examples of what's possible?
– John
Nov 23 '18 at 11:25
or you can useTask.FromResult(...)
– ASpirin
Nov 23 '18 at 11:26
yes its just an example change to return task
– saj
Nov 23 '18 at 13:38
Probably as examples of what's possible?
– John
Nov 23 '18 at 11:25
Probably as examples of what's possible?
– John
Nov 23 '18 at 11:25
or you can use
Task.FromResult(...)– ASpirin
Nov 23 '18 at 11:26
or you can use
Task.FromResult(...)– ASpirin
Nov 23 '18 at 11:26
yes its just an example change to return task
– saj
Nov 23 '18 at 13:38
yes its just an example change to return task
– saj
Nov 23 '18 at 13:38
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53445764%2fwhy-does-asp-net-core-api-scaffold-httpget-synchronous-but-the-other-actions%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53445764%2fwhy-does-asp-net-core-api-scaffold-httpget-synchronous-but-the-other-actions%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Probably as examples of what's possible?
– John
Nov 23 '18 at 11:25
or you can use
Task.FromResult(...)– ASpirin
Nov 23 '18 at 11:26
yes its just an example change to return task
– saj
Nov 23 '18 at 13:38