Failed to set a primary key in your Model , and a few more things. Change to the following:
public class Combustivel
{
[Key]
public int CombustivelId { get; set; }
[Required]
public decimal km_inicial { get; set; }
[Required]
public decimal km_final { get; set; }
[Required]
public decimal litros { get; set; }
[Required]
[DataType(DataType.Currency)]
public decimal valor { get; set; }
}
By Scaffolding , we can use the following cliches suggested by Microsoft for creating, editing, and deleting:
public class CombustiveisController : Controller
{
private ApplicationDbContext db = new ApplicationDbContext();
// GET: Combustiveis
public async Task<ActionResult> Indice()
{
return View(await db.Combustiveis.ToListAsync());
}
// GET: Combustiveis/Detalhes/5
public async Task<ActionResult> Detalhes(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Combustivel combustivel = await db.Combustiveis.FindAsync(id);
if (combustivel == null)
{
return HttpNotFound();
}
return View(combustivel);
}
// GET: Combustiveis/Criar
public ActionResult Criar()
{
return View();
}
// POST: Combustiveis/Criar
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Criar([Bind(Include = "CombustivelId,km_inicial,km_final,litros,valor")] Combustivel combustivel)
{
if (ModelState.IsValid)
{
db.Combustiveis.Add(combustivel);
await db.SaveChangesAsync();
return RedirectToAction("Indice");
}
return View(combustivel);
}
// GET: Combustiveis/Editar/5
public async Task<ActionResult> Editar(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Combustivel combustivel = await db.Combustiveis.FindAsync(id);
if (combustivel == null)
{
return HttpNotFound();
}
return View(combustivel);
}
// POST: Combustiveis/Editar/{id}
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Editar([Bind(Include = "CombustivelId,km_inicial,km_final,litros,valor")] Combustivel combustivel)
{
if (ModelState.IsValid)
{
db.Entry(combustivel).State = EntityState.Modified;
await db.SaveChangesAsync();
return RedirectToAction("Indice");
}
return View(combustivel);
}
// GET: Combustiveis/Excluir/{id}
public async Task<ActionResult> Excluir(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Combustivel combustivel = await db.Combustiveis.FindAsync(id);
if (combustivel == null)
{
return HttpNotFound();
}
return View(combustivel);
}
// POST: Combustiveis/Excluir/{id}
[HttpPost, ActionName("Excluir")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> ConfirmarExclusao(int id)
{
Combustivel combustivel = await db.Combustivels.FindAsync(id);
db.Combustivels.Remove(combustivel);
await db.SaveChangesAsync();
return RedirectToAction("Indice");
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
Here I am considering that you are using Entity Framework with Microsoft SQL Server, as your question says.
@Randrade's response maps the DbSet
manually. The Scaffolding procedure automatically adds DbSet
to you in context.
DbSet
? Context? Questions about how to use? See this answer .
Views are also clichés:
Create.cshtml
@model OneeWeb_v2.Models.Combustivel
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Combustivel</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.km_inicial, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.km_inicial, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.km_inicial, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.km_final, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.km_final, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.km_final, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.litros, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.litros, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.litros, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.valor, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.valor, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.valor, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Criar" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Voltar para Listagem", "Indice")
</div>
Edit.cshtml
@model OneeWeb_v2.Models.Combustivel
@{
ViewBag.Title = "Edit";
}
<h2>Edit</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Combustivel</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.HiddenFor(model => model.CombustivelId)
<div class="form-group">
@Html.LabelFor(model => model.km_inicial, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.km_inicial, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.km_inicial, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.km_final, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.km_final, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.km_final, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.litros, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.litros, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.litros, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.valor, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.valor, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.valor, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Salvar" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Voltar para Listagem", "Indice")
</div>
Delete.cshtml
@model OneeWeb_v2.Models.Combustivel
@{
ViewBag.Title = "Delete";
}
<h2>Delete</h2>
<h3>Você tem certeza de que deseja excluir este registro?</h3>
<div>
<h4>Combustivel</h4>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.km_inicial)
</dt>
<dd>
@Html.DisplayFor(model => model.km_inicial)
</dd>
<dt>
@Html.DisplayNameFor(model => model.km_final)
</dt>
<dd>
@Html.DisplayFor(model => model.km_final)
</dd>
<dt>
@Html.DisplayNameFor(model => model.litros)
</dt>
<dd>
@Html.DisplayFor(model => model.litros)
</dd>
<dt>
@Html.DisplayNameFor(model => model.valor)
</dt>
<dd>
@Html.DisplayFor(model => model.valor)
</dd>
</dl>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
<div class="form-actions no-color">
<input type="submit" value="Excluir" class="btn btn-default" /> |
@Html.ActionLink("Voltar para Listagem", "Indice")
</div>
}
</div>
Details.cshtml
@model OneeWeb_v2.Models.Combustivel
@{
ViewBag.Title = "Details";
}
<h2>Details</h2>
<div>
<h4>Combustivel</h4>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.km_inicial)
</dt>
<dd>
@Html.DisplayFor(model => model.km_inicial)
</dd>
<dt>
@Html.DisplayNameFor(model => model.km_final)
</dt>
<dd>
@Html.DisplayFor(model => model.km_final)
</dd>
<dt>
@Html.DisplayNameFor(model => model.litros)
</dt>
<dd>
@Html.DisplayFor(model => model.litros)
</dd>
<dt>
@Html.DisplayNameFor(model => model.valor)
</dt>
<dd>
@Html.DisplayFor(model => model.valor)
</dd>
</dl>
</div>
<p>
@Html.ActionLink("Editar", "Editar", new { id = Model.CombustivelId }) |
@Html.ActionLink("Voltar para Listagem", "Indice")
</p>