Buscar

Aula_16 11 18



Continue navegando


Prévia do material em texto

Treinamento em C# WebDeveloper
	
Aula
09
	
	Sexta-feira, 16 de Novembro de 2018
	
	
	
Desenvolvimento Orientado a Objetos em C#
	
Limpando os campos do formulário 
após o cadastro do Funcionario:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Projeto.Repository.Entities; //importando..
using Projeto.Business; //importando..
using Projeto.Presentation.Models; //importando..
namespace Projeto.Presentation.Controllers
{
 public class FuncionarioController : Controller
 {
 // GET: Funcionario/Cadastro
 public ActionResult Cadastro()
 {
 return View();
 }
 [HttpPost] //recebe uma requisição POST da página
 public ActionResult CadastrarFuncionario(FuncionarioCadastroModel model)
 {
 //verificar se os dados recebidos atraves da classe model
 //passaram nas regras de validação..
 if(ModelState.IsValid)
 {
 Funcionario funcionario = new Funcionario();
 funcionario.Nome = model.Nome;
 funcionario.Salario = model.Salario;
 funcionario.DataAdmissao = model.DataAdmissao;
 FuncionarioBusiness business = new FuncionarioBusiness();
 string mensagem = business.Cadastrar(funcionario);
 //enviando a mensagem para a página..
 ViewBag.Resultado = mensagem;
 //limpar todos os campos do formulário
 ModelState.Clear();
 }
 //nome da página
 return View("Cadastro");
 }
 }
}
Criando a página de consulta de funcionários:
@{
 Layout = null;
}
<!DOCTYPE html>
<html>
<head>
 <meta name="viewport" content="width=device-width" />
 <title>Consulta</title>
 <link href="~/Content/bootstrap.css" rel="stylesheet" />
</head>
<body>
 <div class="container"> 
 <h1>Consulta de Funcionários</h1>
 <a href="/Home/Index" class="btn btn-info btn-sm">
 Voltar para página inicial
 </a>
 <hr />
 <table class="table table-bordered table-hover table-striped">
 <thead> <!-- CABEÇALHO -->
 <tr> <!-- ABRE LINHA -->
 <th>Código</th>
 <th>Nome do Funcionário</th>
 <th>Salário</th>
 <th>Data de Admissão</th>
 <th>Operações</th>
 </tr> <!-- FECHA LINHA -->
 </thead>
 <tbody> <!-- CORPO DA TABELA -->
 </tbody>
 <tfoot> <!-- RODAPE DA TABELA -->
 <tr> <!-- ABRE LINHA -->
 <td colspan="5">Quantidade de Funcionários: </td>
 </tr> <!-- FECHA LINHA -->
 </tfoot>
 </table>
 </div>
</body>
</html>
Voltando na classe FuncionarioBusiness:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Projeto.Repository.Entities;
using Projeto.Repository.Repositories;
using System.Diagnostics;
namespace Projeto.Business
{
 public class FuncionarioBusiness
 {
 //método para realizar o cadastro de um funcionario..
 public string Cadastrar(Funcionario f)
 {
 FuncionarioRepository funcionarioRepository 
				= new FuncionarioRepository();
 try
 {
 funcionarioRepository.AbrirConexao();
 funcionarioRepository.Inserir(f);
 return $"Funcionário {f.Nome}, cadastrado com sucesso.";
 }
 catch(Exception e)
 {
 Debug.WriteLine(e.Message);
 //retornar mensagem de erro..
 return "Erro ao cadastrar funcionário.";
 }
 finally
 {
 funcionarioRepository.FecharConexao();
 }
 }
 //método para retornar a consulta de funcionarios
 public List<Funcionario> Consultar()
 {
 //declarar uma lista vazia..
 List<Funcionario> lista = new List<Funcionario>();
 FuncionarioRepository repository = new FuncionarioRepository();
 try
 { 
 repository.AbrirConexao();
 lista = repository.Consultar();
 }
 catch(Exception e)
 {
 Debug.WriteLine(e.Message);
 }
 finally
 {
 repository.FecharConexao();
 }
 //retornar a lista..
 return lista;
 }
 }
}
Criando uma classe de modelo para exibir 
os dados dos funcionarios na página:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Projeto.Presentation.Models
{
 public class FuncionarioConsultaModel
 {
 public int IdFuncionario { get; set; }
 public string Nome { get; set; }
 public decimal Salario { get; set; }
 public DateTime DataAdmissao { get; set; }
 }
}
Voltando na classe de controle:
/FuncionarioController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Projeto.Repository.Entities; //importando..
using Projeto.Business; //importando..
using Projeto.Presentation.Models; //importando..
namespace Projeto.Presentation.Controllers
{
 public class FuncionarioController : Controller
 {
 // GET: Funcionario/Cadastro
 public ActionResult Cadastro()
 {
 return View();
 }
 // GET: Funcionario/Consulta
 public ActionResult Consulta()
 {
 //declarando uma lista da classe de modelo..
 List<FuncionarioConsultaModel> lista 
			= new List<FuncionarioConsultaModel>();
 //buscando os dados da camada de negócio..
 FuncionarioBusiness business = new FuncionarioBusiness();
 foreach(Funcionario funcionario in business.Consultar())
 {
 FuncionarioConsultaModel model = new FuncionarioConsultaModel();
 model.IdFuncionario = funcionario.IdFuncionario;
 model.Nome = funcionario.Nome;
 model.Salario = funcionario.Salario;
 model.DataAdmissao = funcionario.DataAdmissao;
 lista.Add(model); //adicionando na lista..
 }
 //enviando a lista para a página..
 return View(lista);
 }
 [HttpPost] //recebe uma requisição POST da página
 public ActionResult CadastrarFuncionario(FuncionarioCadastroModel model)
 {
 //verificar se os dados recebidos atraves da classe model
 //passaram nas regras de validação..
 if(ModelState.IsValid)
 {
 Funcionario funcionario = new Funcionario();
 funcionario.Nome = model.Nome;
 funcionario.Salario = model.Salario;
 funcionario.DataAdmissao = model.DataAdmissao;
 FuncionarioBusiness business = new FuncionarioBusiness();
 string mensagem = business.Cadastrar(funcionario);
 //enviando a mensagem para a página..
 ViewBag.Resultado = mensagem;
 //limpar todos os campos do formulário
 ModelState.Clear();
 }
 //nome da página
 return View("Cadastro");
 }
 }
}
Exibindo os dados na página:
@model List<Projeto.Presentation.Models.FuncionarioConsultaModel>
@{
 Layout = null;
}
<!DOCTYPE html>
<html>
<head>
 <meta name="viewport" content="width=device-width" />
 <title>Consulta</title>
 <link href="~/Content/bootstrap.css" rel="stylesheet" />
</head>
<body>
 <div class="container"> 
 <h1>Consulta de Funcionários</h1>
 <a href="/Home/Index" class="btn btn-info btn-sm">
 Voltar para página inicial</a>
 <hr />
 <table class="table table-bordered table-hover table-striped">
 <thead> <!-- CABEÇALHO -->
 <tr> <!-- ABRE LINHA -->
 <th>Código</th>
 <th>Nome do Funcionário</th>
 <th>Salário</th>
 <th>Data de Admissão</th>
 <th>Operações</th>
 </tr> <!-- FECHA LINHA -->
 </thead>
 <tbody> <!-- CORPO DA TABELA -->
 @foreach(var funcionario in Model)
 {
 <tr>
 <td>@funcionario.IdFuncionario</td>
 <td>@funcionario.Nome</td>
 <td>@funcionario.Salario</td>
 <td>@funcionario.DataAdmissao</td>
 <td>
 <a href="/Funcionario/Exclusao" 
					class="btn btn-danger btn-sm">
 Excluir
 </a>
 <a href="/Funcionario/Edicao" 
					class="btn btn-primary btn-sm">
 Atualizar
 </a>
 </td>
 </tr>
 }
 </tbody>
 <tfoot> <!-- RODAPE DA TABELA -->
 <tr> <!-- ABRE LINHA -->
 <td colspan="5">
				Quantidade de Funcionários: @Model.Count 
			</td>
 </tr> <!-- FECHA LINHA -->
 </tfoot>
 </table>
 </div>
</body>
</html>
Executando:
Formatando salário e data de admissão:
@model List<Projeto.Presentation.Models.FuncionarioConsultaModel>
@{
 Layout = null;
}
<!DOCTYPE html>
<html>
<head>
 <meta name="viewport" content="width=device-width" />
 <title>Consulta</title>
 <link href="~/Content/bootstrap.css" rel="stylesheet" />
</head>
<body>
 <div class="container"> 
 <h1>Consulta de Funcionários</h1>
 <a href="/Home/Index" class="btn btn-info btn-sm">
 Voltar para página inicial
 </a>
 <hr />
 <table class="table table-bordered table-hover table-striped">
 <thead> <!-- CABEÇALHO -->
 <tr> <!-- ABRE LINHA -->
 <th>Código</th>
 <th>Nome do Funcionário</th>
 <th>Salário</th>
 <th>Data de Admissão</th>
 <th>Operações</th>
 </tr> <!-- FECHA LINHA -->
 </thead>
 <tbody> <!-- CORPO DA TABELA -->
 @foreach(var funcionario in Model)
 {
 <tr>
 <td>@funcionario.IdFuncionario</td>
 <td>@funcionario.Nome</td>
 <td>@funcionario.Salario.ToString("c")</td>
 <td>@funcionario.DataAdmissao
				.ToString("dddd dd/MM/yyyy")</td>
 <td>
 <a href="/Funcionario/Exclusao" 
					class="btn btn-danger btn-sm">
 Excluir
 </a>
 <a href="/Funcionario/Edicao" 
					class="btn btn-primary btn-sm">
 Atualizar
 </a>
 </td>
 </tr>
 }
 </tbody>
 <tfoot> <!-- RODAPE DA TABELA -->
 <tr> <!-- ABRE LINHA -->
 <td colspan="5">
			Quantidade de Funcionários: @Model.Count 
			</td>
 </tr> <!-- FECHA LINHA -->
 </tfoot>
 </table>
 </div>
</body>
</html>
Criando o método de exclusão 
na camada de negócio (Business)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Projeto.Repository.Entities;
using Projeto.Repository.Repositories;
using System.Diagnostics;
namespace Projeto.Business
{
 public class FuncionarioBusiness
 {
 //método para realizar o cadastro de um funcionario..
 public string Cadastrar(Funcionario f)
 {
 FuncionarioRepository funcionarioRepository 
				= new FuncionarioRepository();
 try
 {
 funcionarioRepository.AbrirConexao();
 funcionarioRepository.Inserir(f);
 return $"Funcionário {f.Nome}, cadastrado com sucesso.";
 }
 catch(Exception e)
 {
 Debug.WriteLine(e.Message);
 //retornar mensagem de erro..
 return "Erro ao cadastrar funcionário.";
 }
 finally
 {
 funcionarioRepository.FecharConexao();
 }
 }
 //método para retornar a consulta de funcionarios
 public List<Funcionario> Consultar()
 {
 //declarar uma lista vazia..
 List<Funcionario> lista = new List<Funcionario>();
 FuncionarioRepository repository = new FuncionarioRepository();
 try
 { 
 repository.AbrirConexao();
 lista = repository.Consultar();
 }
 catch(Exception e)
 {
 Debug.WriteLine(e.Message);
 }
 finally
 {
 repository.FecharConexao();
 }
 //retornar a lista..
 return lista;
 }
 //método para excluir o funcionario..
 public string Excluir(int idFuncionario)
 {
 FuncionarioRepository repository = new FuncionarioRepository();
 try
 {
 repository.AbrirConexao();
 repository.Excluir(idFuncionario);
 return "Funcionário excluido com sucesso.";
 }
 catch(Exception e)
 {
 Debug.WriteLine(e.Message);
 return "Não foi possível excluir o funcionário";
 }
 finally
 {
 repository.FecharConexao();
 }
 }
 }
}
Voltando ao MVC:
Criando uma caixa de confirmação ao excluir o funcionário:
@model List<Projeto.Presentation.Models.FuncionarioConsultaModel>
@{
 Layout = null;
}
<!DOCTYPE html>
<html>
<head>
 <meta name="viewport" content="width=device-width" />
 <title>Consulta</title>
 <link href="~/Content/bootstrap.css" rel="stylesheet" />
</head>
<body>
 <div class="container"> 
 <h1>Consulta de Funcionários</h1>
 <a href="/Home/Index" class="btn btn-info btn-sm">
 Voltar para página inicial
 </a>
 <hr />
 <table class="table table-bordered table-hover table-striped">
 <thead> <!-- CABEÇALHO -->
 <tr> <!-- ABRE LINHA -->
 <th>Código</th>
 <th>Nome do Funcionário</th>
 <th>Salário</th>
 <th>Data de Admissão</th>
 <th>Operações</th>
 </tr> <!-- FECHA LINHA -->
 </thead>
 <tbody> <!-- CORPO DA TABELA -->
 @foreach(var funcionario in Model)
 {
 <tr>
 <td>@funcionario.IdFuncionario</td>
 <td>@funcionario.Nome</td>
 <td>@funcionario.Salario.ToString("c")</td>
 <td>@funcionario.DataAdmissao
				.ToString("dddd dd/MM/yyyy")</td>
 <td>
 <a href="/Funcionario/Exclusao" 
 onclick="return confirm('Deseja excluir o 
						Funcionario @funcionario.Nome ?');"
 class="btn btn-danger btn-sm">
 Excluir
 </a>
 <a href="/Funcionario/Edicao" 
 class="btn btn-primary btn-sm">Atualizar
 </a>
 </td>
 </tr>
 }
 </tbody>
 <tfoot> <!-- RODAPE DA TABELA -->
 <tr> <!-- ABRE LINHA -->
 <td colspan="5">
				Quantidade de Funcionários: @Model.Count 
			</td>
 </tr> <!-- FECHA LINHA -->
 </tfoot>
 </table>
 </div>
</body>
</html>
QueryString
Passagem de parametros pela URL:
@model List<Projeto.Presentation.Models.FuncionarioConsultaModel>
@{
 Layout = null;
}
<!DOCTYPE html>
<html>
<head>
 <meta name="viewport" content="width=device-width" />
 <title>Consulta</title>
 <link href="~/Content/bootstrap.css" rel="stylesheet" />
</head>
<body>
 <div class="container"> 
 <h1>Consulta de Funcionários</h1>
 <a href="/Home/Index" class="btn btn-info btn-sm">
 Voltar para página inicial
 </a>
 <hr />
 <table class="table table-bordered table-hover table-striped">
 <thead> <!-- CABEÇALHO -->
 <tr> <!-- ABRE LINHA -->
 <th>Código</th>
 <th>Nome do Funcionário</th>
 <th>Salário</th>
 <th>Data de Admissão</th>
 <th>Operações</th>
 </tr> <!-- FECHA LINHA -->
 </thead>
 <tbody> <!-- CORPO DA TABELA -->
 @foreach(var funcionario in Model)
 {
 <tr>
 <td>@funcionario.IdFuncionario</td>
 <td>@funcionario.Nome</td>
 <td>@funcionario.Salario.ToString("c")</td>
 <td>@funcionario.DataAdmissao
					.ToString("dddd dd/MM/yyyy")</td>
 <td>
 <a href="/Funcionario/Exclusao
					?idFuncionario=@funcionario.IdFuncionario" 
 onclick="return confirm('Deseja excluir o 
					Funcionario @funcionario.Nome ?');"
 class="btn btn-danger btn-sm">
 Excluir
 </a>
 <a href="/Funcionario/Edicao" 
 class="btn btn-primary btn-sm">
 Atualizar
 </a>
 </td>
 </tr>
 }
 </tbody>
 <tfoot> <!-- RODAPE DA TABELA -->
 <tr> <!-- ABRE LINHA -->
 <td colspan="5">
				Quantidade de Funcionários: @Model.Count 
			</td>
 </tr> <!-- FECHA LINHA -->
 </tfoot>
 </table>
 </div>
</body>
</html>
Refatoração: (Refactoring)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Projeto.Repository.Entities; //importando..
using Projeto.Business; //importando..
using Projeto.Presentation.Models; //importando..
namespace Projeto.Presentation.Controllers
{
 public class FuncionarioController : Controller
 {
 // GET: Funcionario/Cadastro
 public ActionResult Cadastro()
 {
 return View();
 }
 // GET: Funcionario/Consulta
 public ActionResult Consulta()
 {
 List<FuncionarioConsultaModel> lista = ObterFuncionarios();
 //enviando a lista para a página..
 return View(lista);
 } 
 [HttpPost] //recebe uma requisição POST da página
 public ActionResult CadastrarFuncionario(FuncionarioCadastroModel model)
 {
 //verificar se os dados recebidos atraves da classe model
 //passaram nas regras de validação..
 if(ModelState.IsValid)
 {
 Funcionario funcionario = new Funcionario();
 funcionario.Nome = model.Nome;
 funcionario.Salario = model.Salario;
 funcionario.DataAdmissao = model.DataAdmissao;
 FuncionarioBusiness business = new FuncionarioBusiness();
 string mensagem = business.Cadastrar(funcionario);
 //enviando a mensagem para a página..
 ViewBag.Resultado = mensagem;
 //limpar todos os campos do formulário
 ModelState.Clear();
 }
 //nome da página
 return View("Cadastro");
 }
 //GET : /Funcionario/Exclusao?idFuncionario={0}
 public ActionResult Exclusao(int idFuncionario)
 {
 //acessar a camada de regras de negócio..
 FuncionarioBusiness business = new FuncionarioBusiness();
 string mensagem = business.Excluir(idFuncionario);
 //exibindo a mensagem na página..
 ViewBag.Resultado = mensagem;
 //redirecionar de volta para a página de consulta..
 List<FuncionarioConsultaModel> lista = ObterFuncionarios();
 //retornando para a página..
 return View("Consulta", lista);
 }
 private static List<FuncionarioConsultaModel> ObterFuncionarios()
 {
 //declarando uma lista da classe de modelo..
 List<FuncionarioConsultaModel> lista 
			= new List<FuncionarioConsultaModel>();
 //buscando os dados da camada de negócio..
 FuncionarioBusiness business = new FuncionarioBusiness();
 foreach (Funcionario funcionario in business.Consultar())
 {
 FuncionarioConsultaModel model = new FuncionarioConsultaModel();
 model.IdFuncionario = funcionario.IdFuncionario;
 model.Nome = funcionario.Nome;
 model.Salario = funcionario.Salario;
 model.DataAdmissao = funcionario.DataAdmissao;
 lista.Add(model); //adicionando na lista..
 }
 return lista;
 }
 }
}
Exibindo a mensagem na página:
@model List<Projeto.Presentation.Models.FuncionarioConsultaModel>
@{
 Layout = null;
}
<!DOCTYPE html>
<html>
<head>
 <meta name="viewport" content="width=device-width" />
 <title>Consulta</title>
 <link href="~/Content/bootstrap.css" rel="stylesheet" />
</head>
<body>
 <div class="container"> 
 <h1>Consulta de Funcionários</h1>
 <a href="/Home/Index" class="btn btn-info btn-sm">
 Voltar para página inicial
 </a>
 <hr />
 <h4>@ViewBag.Resultado</h4>
 <table class="table table-bordered table-hover table-striped">
 <thead> <!-- CABEÇALHO -->
 <tr> <!-- ABRE LINHA -->
 <th>Código</th>
 <th>Nome do Funcionário</th>
 <th>Salário</th>
 <th>Data de Admissão</th>
 <th>Operações</th>
 </tr> <!-- FECHA LINHA -->
 </thead>
 <tbody> <!-- CORPO DA TABELA -->
 @foreach(var funcionario in Model)
 {
 <tr>
 <td>@funcionario.IdFuncionario</td>
 <td>@funcionario.Nome</td>
 <td>@funcionario.Salario.ToString("c")</td>
 <td>@funcionario.DataAdmissao
					.ToString("dddd dd/MM/yyyy")</td>
 <td>
 <a href="/Funcionario/Exclusao
					?idFuncionario=@funcionario.IdFuncionario" 
 onclick="return confirm('Deseja excluir o 
					Funcionario @funcionario.Nome ?');"
 class="btn btn-danger btn-sm">
 Excluir
 </a>
 <a href="/Funcionario/Edicao" 
 class="btn btn-primary btn-sm">
 Atualizar
 </a>
 </td>
 </tr>}
 </tbody>
 <tfoot> <!-- RODAPE DA TABELA -->
 <tr> <!-- ABRE LINHA -->
 <td colspan="5">
				Quantidade de Funcionários: @Model.Count 
			</td>
 </tr> <!-- FECHA LINHA -->
 </tfoot>
 </table>
 </div>
</body>
</html>
Executando:
Criando uma nova página para Edição:
/FuncionarioController.cs
// GET: Funcionario/Edicao
public ActionResult Edicao()
{
	return View();
}
@{
 Layout = null;
}
<!DOCTYPE html>
<html>
<head>
 <meta name="viewport" content="width=device-width" />
 <title>Edicao</title>
 <link href="~/Content/bootstrap.css" rel="stylesheet" />
</head>
<body>
 <div class="container"> 
 <h1>Atualizar dados do Funcionário</h1>
 <a href="/Funcionario/Consulta" class="btn btn-info btn-sm">
 Voltar para a consulta
 </a>
 <hr/>
 </div>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations; //importando..
namespace Projeto.Presentation.Models
{
 public class FuncionarioEdicaoModel
 {
 [Required(ErrorMessage = "Por favor, informe o id do funcionário.")]
 public int IdFuncionario { get; set; }
 [Required(ErrorMessage = "Por favor, informe o nome.")]
 public string Nome { get; set; }
 [Required(ErrorMessage = "Por favor, informe o salário.")]
 public decimal Salario { get; set; }
 [Required(ErrorMessage = "Por favor, informe a data de admissão.")]
 public DateTime DataAdmissao { get; set; }
 }
}
Criando o formulário de edição:
@model Projeto.Presentation.Models.FuncionarioEdicaoModel
@{
 Layout = null;
}
<!DOCTYPE html>
<html>
<head>
 <meta name="viewport" content="width=device-width" />
 <title>Edicao</title>
 <link href="~/Content/bootstrap.css" rel="stylesheet" />
</head>
<body>
 <div class="container">
 <h1>Atualizar dados do Funcionário</h1>
 <a href="/Funcionario/Consulta" class="btn btn-info btn-sm">
 Voltar para a consulta
 </a>
 <hr />
 @using (Html.BeginForm("AtualizarFuncionario", 
					"Funcionario", FormMethod.Post))
 {
 <div class="text-danger">
 @Html.ValidationSummary()
 </div>
 <!-- CAMPO OCULTO -->
 @Html.HiddenFor(model => model.IdFuncionario);
 <label>Nome do Funcionário:</label> <br />
 @Html.TextBoxFor(model => model.Nome,
 new
 {
 @class = "form-control col-md-3",
 @placeholder = "Informe o nome"
 })
 <br />
 <label>Salário:</label> <br />
 @Html.TextBoxFor(model => model.Salario,
 new
 {
 @class = "form-control col-md-3",
 @placeholder = "Informe o salário"
 })
 <br />
 <label>Data de Admissão:</label> <br />
 @Html.TextBoxFor(model => model.DataAdmissao,
 new
 {
 @class = "form-control col-md-3",
 @type = "date"
 })
 <br />
 <input type="submit" value="Atualizar Funcionário"
 class="btn btn-primary" />
 <br />
 <br />
 <h4>@ViewBag.Resultado</h4>
 }
 </div>
</body>
</html>
Criando na camada de repositorio de dados 
um método para buscar o funcionario pelo id
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient; //Acesso ao SqlServer
using Projeto.Repository.Entities; //Classes de entidade
namespace Projeto.Repository.Repositories
{
 public class FuncionarioRepository : Conexao
 {
 //método para inserir um funcionário na base de dados..
 public void Inserir(Funcionario f)
 {
 string query = "insert into Funcionario(Nome, Salario, DataAdmissao) "
 + "values(@Nome, @Salario, @DataAdmissao)";
 Command = new SqlCommand(query, Connection);
 Command.Parameters.AddWithValue("@Nome", f.Nome);
 Command.Parameters.AddWithValue("@Salario", f.Salario);
 Command.Parameters.AddWithValue("@DataAdmissao", f.DataAdmissao);
 Command.ExecuteNonQuery();
 }
 //método para atualizar um funcionário na base de dados..
 public void Atualizar(Funcionario f)
 {
 string query = "update Funcionario set Nome = @Nome, 
				Salario = @Salario, "
 + "DataAdmissao = @DataAdmissao 
				where IdFuncionario = @IdFuncionario";
 Command = new SqlCommand(query, Connection);
 Command.Parameters.AddWithValue("@Nome", f.Nome);
 Command.Parameters.AddWithValue("@Salario", f.Salario);
 Command.Parameters.AddWithValue("@DataAdmissao", f.DataAdmissao);
 Command.Parameters.AddWithValue("@IdFuncionario", f.IdFuncionario);
 Command.ExecuteNonQuery();
 }
 //método para excluir o funcionario na base de dados..
 public void Excluir(int idFuncionario)
 {
 string query = "delete from Funcionario 
				where IdFuncionario = @IdFuncionario";
 Command = new SqlCommand(query, Connection);
 Command.Parameters.AddWithValue("@IdFuncionario", idFuncionario);
 Command.ExecuteNonQuery();
 }
 //método para listar todas as vendas na base de dados..
 public List<Funcionario> Consultar()
 {
 string query = "select * from Funcionario";
 Command = new SqlCommand(query, Connection);
 DataReader = Command.ExecuteReader();
 List<Funcionario> lista = new List<Funcionario>();
 
 while (DataReader.Read())
 {
 Funcionario funcionario = new Funcionario();
 funcionario.IdFuncionario = Convert.ToInt32
						(DataReader["IdFuncionario"]);
 funcionario.Nome = Convert.ToString(DataReader["Nome"]);
 funcionario.Salario = Convert.ToDecimal(DataReader["Salario"]);
 funcionario.DataAdmissao = Convert.ToDateTime
						(DataReader["DataAdmissao"]);
 lista.Add(funcionario);
 }
 return lista;
 } 
 
 //método para buscar 1 funcionário pelo id..
 public Funcionario ConsultarPorId(int idFuncionario)
 {
 string query = "select * from Funcionario 
				where IdFuncionario = @IdFuncionario";
 Command = new SqlCommand(query, Connection);
 Command.Parameters.AddWithValue("@IdFuncionario", idFuncionario);
 DataReader = Command.ExecuteReader();
 if(DataReader.Read())
 {
 Funcionario funcionario = new Funcionario();
 funcionario.IdFuncionario = Convert.ToInt32
						(DataReader["IdFuncionario"]);
 funcionario.Nome = Convert.ToString(DataReader["Nome"]);
 funcionario.Salario = Convert.ToDecimal(DataReader["Salario"]);
 funcionario.DataAdmissao = Convert.ToDateTime
						(DataReader["DataAdmissao"]);
 return funcionario; //retornando o funcionario
 }
 else
 {
 return null; //sem espaço de memória.. (vazio)
 }
 }
 }
}
Voltando para a camada de negócio:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Projeto.Repository.Entities;
using Projeto.Repository.Repositories;
using System.Diagnostics;
namespace Projeto.Business
{
 public class FuncionarioBusiness
 {
 //método para realizar o cadastro de um funcionario..public string Cadastrar(Funcionario f)
 {
 FuncionarioRepository funcionarioRepository 
			= new FuncionarioRepository();
 try
 {
 funcionarioRepository.AbrirConexao();
 funcionarioRepository.Inserir(f);
 return $"Funcionário {f.Nome}, cadastrado com sucesso.";
 }
 catch(Exception e)
 {
 Debug.WriteLine(e.Message);
 //retornar mensagem de erro..
 return "Erro ao cadastrar funcionário.";
 }
 finally
 {
 funcionarioRepository.FecharConexao();
 }
 }
 //método para retornar a consulta de funcionarios
 public List<Funcionario> Consultar()
 {
 //declarar uma lista vazia..
 List<Funcionario> lista = new List<Funcionario>();
 FuncionarioRepository repository = new FuncionarioRepository();
 try
 { 
 repository.AbrirConexao();
 lista = repository.Consultar();
 }
 catch(Exception e)
 {
 Debug.WriteLine(e.Message);
 }
 finally
 {
 repository.FecharConexao();
 }
 //retornar a lista..
 return lista;
 }
 //método para excluir o funcionario..
 public string Excluir(int idFuncionario)
 {
 FuncionarioRepository repository = new FuncionarioRepository();
 try
 {
 repository.AbrirConexao();
 repository.Excluir(idFuncionario);
 return "Funcionário excluido com sucesso.";
 }
 catch(Exception e)
 {
 Debug.WriteLine(e.Message);
 return "Não foi possível excluir o funcionário";
 }
 finally
 {
 repository.FecharConexao();
 }
 }
 //método para consultar 1 funcionario pelo id..
 public Funcionario ConsultarPorId(int idFuncionario)
 {
 FuncionarioRepository repository = new FuncionarioRepository();
 Funcionario funcionario = null; //sem espaço de memória
 try
 {
 repository.AbrirConexao();
 funcionario = repository.ConsultarPorId(idFuncionario);
 }
 catch(Exception e)
 {
 Debug.WriteLine(e.Message);
 }
 finally
 {
 repository.FecharConexao();
 }
 return funcionario; //retornando o objeto..
 }
 }
}
Voltando ao controller:
@foreach(var funcionario in Model)
 {
 <tr>
 <td>@funcionario.IdFuncionario</td>
 <td>@funcionario.Nome</td>
 <td>@funcionario.Salario.ToString("c")</td>
 <td>@funcionario.DataAdmissao
				.ToString("dddd dd/MM/yyyy")
			 </td>
 <td>
 <a href="/Funcionario/Exclusao
					?idFuncionario=@funcionario.IdFuncionario" 
 onclick="return confirm('Deseja excluir o 
					Funcionario @funcionario.Nome ?');"
 class="btn btn-danger btn-sm">
 Excluir
 </a>
 <a href="/Funcionario/Edicao
					?idFuncionario=@funcionario.IdFuncionario" 
 class="btn btn-primary btn-sm">
 Atualizar
 </a>
 </td>
 </tr>
 }
---------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Projeto.Repository.Entities; //importando..
using Projeto.Business; //importando..
using Projeto.Presentation.Models; //importando..
namespace Projeto.Presentation.Controllers
{
 public class FuncionarioController : Controller
 {
 // GET: Funcionario/Cadastro
 public ActionResult Cadastro()
 {
 return View();
 }
 // GET: Funcionario/Consulta
 public ActionResult Consulta()
 {
 List<FuncionarioConsultaModel> lista = ObterFuncionarios();
 //enviando a lista para a página..
 return View(lista);
 } 
 
 // GET: Funcionario/Edicao?idFuncionario={0}
 public ActionResult Edicao(int idFuncionario)
 {
 FuncionarioEdicaoModel model = new FuncionarioEdicaoModel();
 //buscando da camada de negócio..
 FuncionarioBusiness business = new FuncionarioBusiness();
 Funcionario funcionario = business.ConsultarPorId(idFuncionario);
 
 //verificar se o funcionario foi encontrado..
 if(funcionario != null)
 {
 model.IdFuncionario = funcionario.IdFuncionario;
 model.Nome = funcionario.Nome;
 model.Salario = funcionario.Salario;
 model.DataAdmissao = funcionario.DataAdmissao;
 }
 //enviando a model..
 return View(model);
 }
 [HttpPost] //recebe uma requisição POST da página
 public ActionResult CadastrarFuncionario(FuncionarioCadastroModel model)
 {
 //verificar se os dados recebidos atraves da classe model
 //passaram nas regras de validação..
 if(ModelState.IsValid)
 {
 Funcionario funcionario = new Funcionario();
 funcionario.Nome = model.Nome;
 funcionario.Salario = model.Salario;
 funcionario.DataAdmissao = model.DataAdmissao;
 FuncionarioBusiness business = new FuncionarioBusiness();
 string mensagem = business.Cadastrar(funcionario);
 //enviando a mensagem para a página..
 ViewBag.Resultado = mensagem;
 //limpar todos os campos do formulário
 ModelState.Clear();
 }
 //nome da página
 return View("Cadastro");
 }
 //GET : /Funcionario/Exclusao?idFuncionario={0}
 public ActionResult Exclusao(int idFuncionario)
 {
 //acessar a camada de regras de negócio..
 FuncionarioBusiness business = new FuncionarioBusiness();
 string mensagem = business.Excluir(idFuncionario);
 //exibindo a mensagem na página..
 ViewBag.Resultado = mensagem;
 //redirecionar de volta para a página de consulta..
 List<FuncionarioConsultaModel> lista = ObterFuncionarios();
 //retornando para a página..
 return View("Consulta", lista);
 }
 private static List<FuncionarioConsultaModel> ObterFuncionarios()
 {
 //declarando uma lista da classe de modelo..
 List<FuncionarioConsultaModel> lista 
				= new List<FuncionarioConsultaModel>();
 //buscando os dados da camada de negócio..
 FuncionarioBusiness business = new FuncionarioBusiness();
 foreach (Funcionario funcionario in business.Consultar())
 {
 FuncionarioConsultaModel model = new FuncionarioConsultaModel();
 model.IdFuncionario = funcionario.IdFuncionario;
 model.Nome = funcionario.Nome;
 model.Salario = funcionario.Salario;
 model.DataAdmissao = funcionario.DataAdmissao;
 lista.Add(model); //adicionando na lista..
 }
 return lista;
 }
 }
}
Na página:
29