1 @inherits Microsoft.VisualStudio.Web.CodeGeneration.Templating.RazorTemplateBase
3 using System.Collections.Generic;
5 using System.Threading.Tasks;
6 using Microsoft.AspNetCore.Http;
7 using Microsoft.AspNetCore.Mvc;
8 using Microsoft.EntityFrameworkCore;
10 foreach (var namespaceName in Model.RequiredNamespaces)
12 @:using @namespaceName;
16 namespace @Model.ControllerNamespace
19 string routePrefix = "api/" + Model.ControllerRootName;
20 var entitySetName = Model.ModelMetadata.EntitySetName;
21 var primaryKeyName = Model.ModelMetadata.PrimaryKeys[0].PropertyName;
22 var primaryKeyShortTypeName = Model.ModelMetadata.PrimaryKeys[0].ShortTypeName;
23 var primaryKeyType = Model.ModelMetadata.PrimaryKeys[0].TypeName;
24 var primaryKeyIsAutoGenerated = Model.ModelMetadata.PrimaryKeys[0].IsAutoGenerated;
26 [Produces("application/json")]
27 [Route("@routePrefix")]
28 public class @Model.ControllerName : Controller
30 private readonly @Model.ContextTypeName _context;
32 public @(Model.ControllerName)(@Model.ContextTypeName context)
39 public IEnumerable<@Model.ModelTypeName> Get@(entitySetName)()
41 return _context.@(entitySetName);
44 // GET: @routePrefix/5
46 public async Task<IActionResult> Get@(Model.ModelTypeName)([FromRoute] @primaryKeyShortTypeName id)
48 if (!ModelState.IsValid)
50 return BadRequest(ModelState);
53 var @Model.ModelVariable = await _context.@(entitySetName).SingleOrDefaultAsync(m => m.@primaryKeyName == id);
55 if (@Model.ModelVariable == null)
60 return Ok(@Model.ModelVariable);
63 // PUT: @routePrefix/5
65 public async Task<IActionResult> Put@(Model.ModelTypeName)([FromRoute] @primaryKeyShortTypeName id, [FromBody] @Model.ModelTypeName @Model.ModelVariable)
67 if (!ModelState.IsValid)
69 return BadRequest(ModelState);
72 if (id != @(Model.ModelVariable).@primaryKeyName)
77 _context.Entry(@Model.ModelVariable).State = EntityState.Modified;
81 await _context.SaveChangesAsync();
83 catch (DbUpdateConcurrencyException)
85 if (!@(Model.ModelTypeName)Exists(id))
100 public async Task<IActionResult> Post@(Model.ModelTypeName)([FromBody] @Model.ModelTypeName @Model.ModelVariable)
102 if (!ModelState.IsValid)
104 return BadRequest(ModelState);
107 _context.@(entitySetName).Add(@Model.ModelVariable);
109 if (primaryKeyIsAutoGenerated)
111 @:await _context.SaveChangesAsync();
117 @:await _context.SaveChangesAsync();
119 @:catch (DbUpdateException)
121 @:if (@(Model.ModelTypeName)Exists(@(Model.ModelVariable).@primaryKeyName))
123 @:return new StatusCodeResult(StatusCodes.Status409Conflict);
133 return CreatedAtAction("Get@(Model.ModelTypeName)", new { id = @(Model.ModelVariable).@primaryKeyName }, @Model.ModelVariable);
136 // DELETE: @routePrefix/5
138 public async Task<IActionResult> Delete@(Model.ModelTypeName)([FromRoute] @primaryKeyShortTypeName id)
140 if (!ModelState.IsValid)
142 return BadRequest(ModelState);
145 var @Model.ModelVariable = await _context.@(entitySetName).SingleOrDefaultAsync(m => m.@primaryKeyName == id);
146 if (@Model.ModelVariable == null)
151 _context.@(entitySetName).Remove(@Model.ModelVariable);
152 await _context.SaveChangesAsync();
154 return Ok(@Model.ModelVariable);
157 private bool @(Model.ModelTypeName)Exists(@primaryKeyShortTypeName id)
159 return _context.@(entitySetName).Any(e => e.@primaryKeyName == id);