Escolar Documentos
Profissional Documentos
Cultura Documentos
C#.NET CORE
Exercício Disciplina – aula 4
CRIE UM NOVO PROJETO
Selecione o menu Arquivo e em seguida, no submenu, escolha Novo e então escolha Projeto.
CONTINUANDO
• Na janela Novo Projeto,
escolha Visual C# e em
seguida Aplicativo WEB
ASP.Net Core.
• Defina o nome do Projeto
• Escolha o local onde o
projeto será gravado. Utilize
o botão Procurar...
• Clique em OK para
confirmar.
Escolha a opção “Aplicativo
Web (Modelo-Exibição-
Controlador) e então clique
no botão OK.
Utilize as demais
configurações como
proposto pelo Visual Studio.
• Insira os comandos:
• using System.ComponenteModel.DataAnnotations;
• Este comandos permitem o uso de anotações na
classe
• using
System.ComponenteModel.DataAnnotations.Schema;
• Definição do tratamento de chaves primárias, nome
da tabela, nome do campo, e outras características
existentes em tabelas do banco de dados.
• Neste código foram criados 4 atributos
privados e os respectivos métodos de acesso
publico. Segue descrição das anotações:
• [Key] – indica que o atributo é um
identificador, normalmente tratado no DB
como chave primária.
• [DatabaseGenerated(DatabaseGeneratedO
ption.None)] – indica que o identificador será
fornecido e o banco de dados nem o
EntityFrameWork(veremos posteriormente)
serão responsáveis por esta informação.
• [Display(Name=“”)] Determina o nome que
será usado para o atributo quando for
exibido em Views.
• [MaxLength(10)] – Determina que o campo
aceitará no máximo 10 caracteres.
• [Requered] – Determina que o
preenchimento é obrigatório.
• [DataType(DataType.Date)] – Determina um
atributo do tipo DateTime, mas apenas a
parte Date será utilizada.
• [Range(100,300)] – Determinas valor mínimo e
máximo para o atributo numérico.
CRIANDO UM CONTROLLER
• Na pasta Controller,
clique com o botão
direito do mouse e
escolha a opção
Adicional e depois
escolha Controlador.
• Opcionalmente, você
pode utilizar “Novo item
com scaffold”, neste caso
as Views e os métodos do
Controller serão criados
automaticamente
baseados na Classe
selecionada.
Selecione o Indicado.
Os modelo:
• Create – cria uma view para
entrada de dados.
• Delete – Cria uma view para
exibirmos dados que serão
excluídos.
• Details – Cria a view que apenas
exibi dados.
• Edite – Cria uma view que permite
alterar os dados que são
visualizados.
• Empty – View totalmente vazia.
• Lista – View em forma de tabela
para exibir todos os dados.
Em Classe Modelo, é necessário
indicar qual a classe que será
utilizada para a obtenção dos
atributos que serão exibidos na View.
Atenção, aqui também são
apresentados classes Controllers.
Para facilitar o uso do EF e da migração. O atributo que representa a chave estrangeira deve
possuir o nome da Classe de referência (Disciplina) seguindo do nome do atributo que é o
identificador (DisciplinaID), por isto foi exemplificado usando o nome DisciplinaDisciplinaID.
ATUALIZANDO UMA CLASSE
PARA REPRESENTAR
RELACIONAMENTO MUITOS
PARA MUITOS.
Tomando por base o DER ao lado. As classes
Disciplinas e Alunos estão relacionadas.
Onde uma disciplina pode ser cursada por
diversos Alunos e um Aluno pode cursar
diversas disciplinas.
Não é objetivo aqui definir a viabilidade deste
Diagrama, mas apenas indicar como
representar a relação nas classes envolvidas.
Por se tratar de uma relação muitos para
muitos, uma tabela associativa é utilizada.
Utilizaremos o nome AlunosDisciplinas.
Esta tabela associativa será representada pela
classe AlunoDisciplina.
A classe Disciplina possuirá uma lista de
AlunoDisciplina atribuídos para cada disciplina.
Nesta classe deve ser inserido um atributo para
gerenciar a lista.
Ex.
private ICollection<AlunosDisciplina> listaAlunos;
Para facilitar o uso do EF e da migração. O atributo que representa a chave estrangeira deve
possuir o nome da Classe de referência (Disciplina) seguindo do nome do atributo que é o
identificador (DisciplinaID), por isto foi exemplificado usando o nome DisciplinaDisciplinaID.
CRIAR ÍNDICE ÚNICO E
ÍNDICE PRIMÁRIO
COMPOSTO
• Índice único e índice primário composto não estão disponíveis como
anotações em projetos .NET Core.
• Para implementá-los é necessário utilizar a API Fluente, ou seja, programar
estas características das tabelas, mas atenção, isto apenas é necessário se
for utilizar o processo de migração do EF. Em outras palavras, deixar o EF
criar o Banco de dados e as tabelas a partir das definições existentes nas
classes da aplicação. Se o banco de dados já existir, estas características
das tabelas já estão implementadas e cabe ao desenvolvedor apenas
utilizar estas características.
• O código abaixo exemplifica os processos para criar os índices
mencionados.
protected override void OnModelCreating(ModelBuilder modelBuilder){
base.OnModelCreating(modelBuilder);
// cria um índice único
modelBuilder.Entity<[Classe que representa a tabela]>()
// a => a. pode ser substituído outro valor ( nome => nome. )
.HasIndex(a => a.[atributo]) // [atributo] = nome do campo
.HasName(“[nome do indice]");
.IsUnique();
// cria um índice primário composto (vários atributos)
modelBuilder.Entity<Aluno>()
// new {} cria um vetor com os atributos que compõem a chave.
.HasKey(a => new { a. [atributo1], a. [atributo2] })
.HasName(“[nome do indice]");
}