EF Core 2.1 - Conversão de valores - II
Hoje vou apresentar um exemplo de como usar conversão de valores, o novo recurso do EF Core 2.1. |
Os conversores de valores são um novo recurso do EF Core 2.1 e permitem que os valores das propriedades sejam convertidos durante a leitura ou gravação no banco de dados.
Eu já apresentei o recurso neste artigo : EF Core 2.1 - Conversão de valores
Neste artigo veremos mais um exemplo de conversão usando a classe ValueConverter e o método HasConversion().
Definindo o cenário
Vejamos um exemplo prático onde vamos cifrar um texto e gravar no banco de dados e decifrar o valor quando o dado for lido do banco de dados.
Vamos supor que já temos um banco de dados chamado ABDemoDB e uma tabela Usuarios com a seguinte estrutura:
Abaixo vemos o script SQL para criar a tabela Usuarios:
USE [ABDemoDB]
GO
CREATE TABLE [dbo].[Usuarios](
[UsuarioId] [int] IDENTITY(1,1) NOT NULL,
[Nome] [nvarchar](100) NOT NULL,
[Senha] [nvarchar](250) NOT NULL,
CONSTRAINT [PK_Usuarios] PRIMARY KEY CLUSTERED
(
[UsuarioId] ASC
)
);
|
Criando o projeto no VS 2017
Abra o VS 2017 Community e crie um novo projeto .NET Core do tipo Console App(.NET Core) chamado EFCore_Converter.
Inclua no projeto a referência para o Microsoft.EntityFrameworkCore.SqlServer :
Observe que estou usando a versão 2.21, que é a versão mais estável, mas podemos usar a versão 2.1 ou superior.
Crie no projeto a pasta Model e nesta pasta inclua duas classes:
1- Usuario
public class Usuario
{
public int UsuarioId { get; set; }
public string Nome { get; set; }
public string Senha { get; set; }
}
|
2- AppDbContext
using Microsoft.EntityFrameworkCore; using System; using System.Text; namespace EFCore_Converter.Model protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder) |
No método OnModelCreating usamos o método HasConversion() na propriedade Senha da entidade Usuario e estamos definindo a conversão cifrando o texto para salvar no banco de dados e decifrando o valor da coluna Senha quando formos ler a informação.
Agora vamos ver a conversão funcionando...
No arquivo Program.cs inclua o código abaixo:
using EFCore_Converter.Model;
using static System.Console;
namespace EFCore_Converter
{
class Program
{
static void Main(string[] args)
{
using (var contexto = new AppDbContext())
{
IncluiUsuario(contexto);
ListaUsuarios(contexto);
ReadLine();
}
}
private static void ListaUsuarios(AppDbContext contexto)
{
foreach (var usuario in contexto.Usuarios)
{
WriteLine($"{usuario.Nome,10} {usuario.Senha, 30}");
}
}
private static void IncluiUsuario(AppDbContext contexto)
{
var novoUsuario = new Usuario
{
Nome = "Mariana",
Senha = "#TextoDaSenha@"
};
contexto.Add(novoUsuario);
contexto.SaveChanges();
}
}
}
|
No código acima temos o método IncluiUsuario() que inclui um novo usuário, e que esta atribuindo o valor da senha na propriedade Senha do modelo.
Graças ao novo recurso do EF Core a conversão é feita durante a inclusão, onde o texto é cifrado, e quando a informação for lida, ela é decifrada.
Veja o resultado da execução a seguir:
Após incluir o novo usuário espiando a tabela Usuarios no banco de dados veremos a senha cifrada:
Para exibir as informações a coluna Senha é lida e decifrada exibindo o valor original:
Pegue o código completo do projeto aqui: EFCore_Converter.zip
"Porque Deus não nos destinou para a ira, mas para a aquisição da salvação, por nosso Senhor Jesus Cristo."
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
EF Core - Iniciando com o Entity Framework Core - Macoratti
EF Core - Usando a abordagem DataBase First - Criando - Macoratti
EF Core - Apresentando o EF Core Power Tools - Macoratti
EF Core 2.0 - Scaffolding DbContext e Models usando CLI - Macoratti
ASP .NET Core - CRUD usando Blazor e Entity Framework ... - Macoratti
Curso Entity Framework Core 2.0 - Vídeo Aulas - Macoratti