Nesta aula iremos aprender como fazer templates dinâmicos, tendo a possibilidade de juntar lógica de programação a um tema cadastrado na base de dados.
O Entity Framework é utilizado para facilitar o gerenciamento do banco de dados e seus modelos.
O Entity Framework possui três estratégias:Database First, Model First e Code First
Nesta aula vamos ver a estratégia Code First no Entity framework, onde o mapeamento é feito no código, e através deste mapeamento serão gerados todos os modelos.
Vamos criar uma nova aplicação do tipo console application chamada EntityFrameworkCodeFirst e os modelos que iremos utilizar
namespace EntityFrameworkCodeFirst
{
class Program
{
static void Main(string[] args)
{
}
}
}
Criaremos uma nova classe Cliente
namespace EntityFrameworkCodeFirst
{
public class Cliente
{
public int Id { get;set };
public string Nome { get;set };
public string Telefone { get;set };
}
}
Iremos instalar o EntityFramework:
Em referências do Projeto podemos verificar que foram incluídos referências do EntityFramework:
No arquivo App.config, podemos verificar que ja existe a configuração do banco de dados:
< ?xml version="1.0" encoding="utf-8"?>
< configuration>
< entityFramework>
< defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory,EntityFramework" />
< providers>
< provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlServerServices, EntityFramework.SqlServer" />
< /providers>
< /entityFramework>
< /configuration >
Vamos criar uma nova classe que fará toda a responsabilidade de clientes na base de dados utilizando EntityFramework. O nome da classe será ClienteContext.Esta classe irá herdar de DBContext.
namespace EntityFrameworkCodeFirst
{
class ClienteContext: DBContext
{
public DbSet< Cliente> clientes {get;set;}
}
}
Automaticamente quando executarmos a aplicação, o sistema vai verificar que temos uma conexão com o SqlServer, que existe o EntityFramework, que tem o objeto chamado cliente e possui as propriedades Id,Nome e Telefone. Será criado uma tabela Cliente no banco de dados, se não existir.
No arquivo principal, vamos chamar a classe ClienteContext, que vai criar os dados na base de dados.
namespace EntityFrameworkCodeFirst
{
class Program
{
static void Main(string[] args)
{
using(var context - new ClienteContext())
{
var quantidade_clientes = context.Clientes.Count();
context.Clientes.Add(new Cliente() { Nome= 'Danilo', Telefone='11976144154'});
context.saveChanges();
}
}
}
}
Agora vamos criar uma outra tabela chamada de Produtos e uma classe Produto.
namespace EntityFrameworkCodeFirst
{
Table("Produtos")]
public class Produto
{
public int Id { get;set };
public string Nome { get;set };
public string Descricao { get;set };
}
}
No ClienteContext vamos informar que temos um novo objeto chamado Produto.
namespace EntityFrameworkCodeFirst
{
class ClienteContext: DBContext
{
public DbSet< Cliente> Clientes {get;set;}
public DbSet< Produto> Produtos {get;set;}
}
}
No arquivo principal, vamos salvar também o objeto Produto.
namespace EntityFrameworkCodeFirst
{
class Program
{
static void Main(string[] args)
{
using(var context - new ClienteContext())
{
var quantidade_clientes = context.Clientes.Count();
context.Clientes.Add(new Cliente() { Nome= 'Danilo2', Telefone='11976144154'});
context.saveChanges();
context.Produtos.Add(new Produto() { Nome= 'Camera 2x', Descricao='teste produto'});
context.saveChanges();
}
}
}
}
Como podemos notar, não foi possivel criar os dados de produtos, pois precisamos criar uma migração. Portanto, no terminal, digitar:
Add-Migration Produto
Será criado um arquivo na pasta Migrations da aplicação, conforme abaixo:
using System.Data.Entity.Migrations;
public partial class Produto : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.Produtos",
c => new
{
Id = c.Int(nullable: false, identity: true),
Nome = c.String(),
Descricao = c.String(),
})
.PrimaryKey(t=> t.Id);
}
public override void Up()
{
DropTable("dbo.Produtos");
}
}
Iremos executar a migration, com o comando update-database, a tabela de Produtos será criada.
update-Database
Nesta aula iremos aprender como fazer templates dinâmicos, tendo a possibilidade de juntar lógica de programação a um tema cadastrado na base de dados.
O Entity Framework é utilizado para facilitar o gerenciamento do banco de dados e seus modelos.
O Entity Framework possui três estratégias:Database First, Model First e Code First
Nesta aula vamos ver a estratégia Code First no Entity framework, onde o mapeamento é feito no código, e através deste mapeamento serão gerados todos os modelos.
Vamos criar uma nova aplicação do tipo console application chamada EntityFrameworkCodeFirst e os modelos que iremos utilizar
namespace EntityFrameworkCodeFirst
{
class Program
{
static void Main(string[] args)
{
}
}
}
Criaremos uma nova classe Cliente
namespace EntityFrameworkCodeFirst
{
public class Cliente
{
public int Id { get;set };
public string Nome { get;set };
public string Telefone { get;set };
}
}
Iremos instalar o EntityFramework:
Em referências do Projeto podemos verificar que foram incluídos referências do EntityFramework:
No arquivo App.config, podemos verificar que ja existe a configuração do banco de dados:
< ?xml version="1.0" encoding="utf-8"?>
< configuration>
< entityFramework>
< defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory,EntityFramework" />
< providers>
< provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlServerServices, EntityFramework.SqlServer" />
< /providers>
< /entityFramework>
< /configuration >
Vamos criar uma nova classe que fará toda a responsabilidade de clientes na base de dados utilizando EntityFramework. O nome da classe será ClienteContext.Esta classe irá herdar de DBContext.
namespace EntityFrameworkCodeFirst
{
class ClienteContext: DBContext
{
public DbSet< Cliente> clientes {get;set;}
}
}
Automaticamente quando executarmos a aplicação, o sistema vai verificar que temos uma conexão com o SqlServer, que existe o EntityFramework, que tem o objeto chamado cliente e possui as propriedades Id,Nome e Telefone. Será criado uma tabela Cliente no banco de dados, se não existir.
No arquivo principal, vamos chamar a classe ClienteContext, que vai criar os dados na base de dados.
namespace EntityFrameworkCodeFirst
{
class Program
{
static void Main(string[] args)
{
using(var context - new ClienteContext())
{
var quantidade_clientes = context.Clientes.Count();
context.Clientes.Add(new Cliente() { Nome= 'Danilo', Telefone='11976144154'});
context.saveChanges();
}
}
}
}
Agora vamos criar uma outra tabela chamada de Produtos e uma classe Produto.
namespace EntityFrameworkCodeFirst
{
Table("Produtos")]
public class Produto
{
public int Id { get;set };
public string Nome { get;set };
public string Descricao { get;set };
}
}
No ClienteContext vamos informar que temos um novo objeto chamado Produto.
namespace EntityFrameworkCodeFirst
{
class ClienteContext: DBContext
{
public DbSet< Cliente> Clientes {get;set;}
public DbSet< Produto> Produtos {get;set;}
}
}
No arquivo principal, vamos salvar também o objeto Produto.
namespace EntityFrameworkCodeFirst
{
class Program
{
static void Main(string[] args)
{
using(var context - new ClienteContext())
{
var quantidade_clientes = context.Clientes.Count();
context.Clientes.Add(new Cliente() { Nome= 'Danilo2', Telefone='11976144154'});
context.saveChanges();
context.Produtos.Add(new Produto() { Nome= 'Camera 2x', Descricao='teste produto'});
context.saveChanges();
}
}
}
}
Como podemos notar, não foi possivel criar os dados de produtos, pois precisamos criar uma migração. Portanto, no terminal, digitar:
Add-Migration Produto
Será criado um arquivo na pasta Migrations da aplicação, conforme abaixo:
using System.Data.Entity.Migrations;
public partial class Produto : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.Produtos",
c => new
{
Id = c.Int(nullable: false, identity: true),
Nome = c.String(),
Descricao = c.String(),
})
.PrimaryKey(t=> t.Id);
}
public override void Up()
{
DropTable("dbo.Produtos");
}
}
Iremos executar a migration, com o comando update-database, a tabela de Produtos será criada.
update-Database