Escolar Documentos
Profissional Documentos
Cultura Documentos
SQL Server 2017- mas usou 2012 mas disse ele que pode ser a 2017
ssms
new project
web
Aplicativo web ASP.NET Core
//no exemplo ele nao coloca autenticacao diz ele q vai fazer depois
//exibe-gerenciador de solucoes
Entendo MVC
-URL n�o � igual a p�gina
-No modelo de desenvolvimento MVC uma URL corresponde a uma a�ao de um controller e
nao de uma
p�gina em disco
-No modelo de desenvolvimento MVC as requisi��es do navegador sao mapeadas para
a�oes do Controller
- o desenvolvimento � centrado na l�gica de aplicacao
para editar arquivo de projeto vc sele o arquivo de projeto com botao direti e vai
em
edit ----.csproj aonde vai indicar as dependencias do seu projeto
-----------------------------------------------
Modelo de Dom�nio- Entity Framework Core
-Vender Lanches
(Lanche.cs)
-Lanche
-Nome pre�o, descri�ao curta, descri�ao longa, imagem, imagem miniatura,--
categoria--
se � um ele preferido, se o lanche est� dispon�vel
(Categoria.cs)
-Categoria
-Nome e descri�ao
-----------------------------
Entity Framework Core 2.0
Ferramenta ORM: mapeia as classes para as tabelas
-Abordagem Code-First
-Gerar o banco de dados e tabelas a partir das classes
-Vantagens
-Definir as propriedades e relacionamentos usando c�digo C#
-Abstrair comandos SQL e objetos ADO .NET
- Permitir gerenciar o versionamento do banco de dados:Migrations
obs:ele eclui um modelo que ja vem como paadrao que nao vamos utiizar
ErrorViewModel.cs
e � utilizada pelo controlado rHome temos que ir l� e excluir a interface Error()
CodeFirst
-Aumento de Produtividade
-Controe sobre o versionamento do bd-Migration
-F�cil de testar e integrar
-------------------------------------------------
CONFIGURANDO O ENTITY FRAMEWORK CORE
Esses pacotes instalados etaram referenciados em edit botao direito sobre .csproj
em appsettings colocamos a string de conexao e sem a string nao tem como saber como
ele
vai conectar com o BD
"Data source" ->Nome do servidor
"Initial catalog"->Nome do BD
----------------------------------------------------
DATA ANNOTATIONS
Como?
----------------------------------------------------
USANDO EF CORE MIGRATIONS
add-migration MigracaoInicial
[nome da migration]
se vc nao falar ele vai vir com tamanho maximo portanto temos de restingir
e depois d� o update-database
o arquivo snapshot ele usa para acompanhar e gerenciar o versionamento do bd
-----------------------------------------------------
POPULANDO O BANCO DE DADOS COM MIGRATIONS
para voc� ver a estrutura de uma tabela bast ir no ssms com botao direito e
clicar em design
add-migration nome_migracao -Cria Script dessa vez com metodos Up e down vazios
e vamos nele incluir um codigo sql para incluir e desfazer
update database -Aplica o Script
METODO UP()
migrationBuilder.Sql("INSERT INTO Categorias(CategoriaNome,Descricao)
VALUES('Lanche Normal','Lanche feito com ingredientes normais')");
METODO DOWN()
migrationBuilder.Sql("DELETE FROM Categorias");
---------------------------------------------------
APRESENTACAO O PADRAO REPOSITORY
Vantagens
-Desacopla a sua aplica��o da l�gica de acesso a dados
-centraliza o seu c�digo para consultas e acesso a dados
- facilita os testes unit�rios
-minimiza a duplicac�o de codigo nas consultas
IMplementacao
Interface<----Classe Concreta
ILancheRepository<----LancheRepository
ICategoriaRepository<--CategoriaRepository
----------------------------------------------------------------
IMPLEMENTACAO O PADRAO REPOSITORY
quando vc define uma interface a sua aplicacao vc pode registrar iss como um
servi�o para fazer inje�ao
de dependencia no controlador, vamos presisar da instancia desses repositorios no
controlador
pois ao inves de referenciar o EF vamos referenciar o Repositorio, quem esta
referenciando o
Entity Framework � o reposit�rio
//trasiente pq o servi�o vai ser criado toda vez que for utilizado
services.AddTransient<ICategoriaRepository, CategoriaRepository>();
services.AddTransient<ILancheRepository, LancheRepository>();
SECAO 4
-----------------------------------------------------------------------------------
CRIANDO O CONTROLADOR E A VIEW PARA EXIBIR LANCHES
OBS:ERROR AQUI ele disse que interfaces sao automaticamente publicas mas � mentira
tive de colocar publicas para resolver problema
o m�todo Action geralmente retorna uma result que pode ter um retorno de uma View
e pode ser de v�rios tipos
vie name:List
template:List pq vai listar
Model Class pq vai mostrar info de Lanche
e falar que vamos usar pagina de Layout
ERROR SOLVED
Microsoft.AspNetCore.All to 2.08,
Microsoft.EntityFrameworkCore.Tools to 2.03 and
Microsoft.VisualStudio.Web.CodeGeneration.Design to 2.01
dentro da View aonde tem @ � codigo Razor que foi feito para simplificar
e facilitar a codificacao das views
---------------------------------------------------------------------------
AJUSTANDO O CODIGO DA VIEW LIST
--------------------------------------------------------------------------
OS ARQUIVOS _VIEWSTART E _VIEWIMPORTS E O BOOTSTRAP
_Layout.cshtml
ela tem o o rodap� e a barra de navque ser� comum a todas views
dentro da Pasta Views temos a pasta_ViewStart que fala qual � o arquivo de Layout
e se comentarmos ela com // as paginas nao vao ter mais o arquivo de Layout
tirando a barra de nav e rodape, estilo do site.css e do bootstrap
o arquivo _ViewsImports.cshtml
contem todos imports e referentes comuns a todas as Views
e diz que a utilizacao das tags helpers esto habilitadas
-----------------------------------------------------------------
VIEWMODEL - CONCEITO
ViewModel
� um padrao que permite separar as responsabilidades entre os Models
de dom�nio e os Models que atendem as Views
Permite modelar entidades a partir de um ou mais Models em um
�nico objeto que serao representado em uma View
ViewModel
- cont�m toda l�gica de interface e a referencia ao model e assim atua como model
para a view
-separa as responsabilidades do Model usando informa��es que somente serao exibidas
ns
Views
-contem somente dados e comportamentos relacionados com a view
-cada viewmodel possui uma ViewTipada
+++++
Dica:Se existem informa�oes em seu Model que sao utilizadas somente pelas views
entao o seu
Model esta com a responsabilidade de tamb�m cuidar da camada de apresentacao
ViewModel - Benif�cios
1-Nao ter que alterar uma classe do Model para atender as necessidade de uma View
2-Agrupar informa�oes de uma ou mais Models em uma �nica classe, poupando
a necessidade de realizar muitas consultas
3-Um dado n�o contido no Model de dom�nio pode ser facilmente transportado via
ViewModel
---------------------------------------------------------------
IMPLEMENTANDO O PADRAO VIEWMODEL
-------------------------------------------------------------------
APRESENTANDO PARTIAL VIEWS
PartialViews
Uma partial view � uma view que � renderizada em outra view
Elas sao usadas para encapsular a logica reutilizada ns views
permitindo simplificar a complexidade das views
Elas podem ser usadas em multiplas views onde � necessario
uma l�gica similar evitando assim a duplicidade de c�digo
Uma partial view criada em uma pasta espec�fica das views de um controller e pode
ser usada
por todas views dessa pasta
Uma partial view criada na pasta Shared pode ser usada por todas as views da pasta
Views
@Html.Partial("NomeDaView",ViewData)
@Html.Partial("NomeDaView",model)
???As atualiza�oes feitas nos dados da PartialViews n�o sao mantidas na view
principal.
???O ViewData alterado em uma PartialView � perdido quando ela retorna
@Html.Partial("~/Views/Forder/NomeView.cshtml")
@Html.Partial("/Views/Forder/NomeView.cshtml")
@Html.Partial("../Conta/LoginPartial.cshtml")
ocaliza a partial view usando caminhos relativos
-----------------------------------------------------------
IMPLEMENTACAO DA PARTIAL VIEW
-----------------------------------------------
CARRINHO DE COMPRAS
ERROR
The current CSharpHelper cannot scaffold literals of type
'Microsoft.EntityFrameworkCore.Metadata.Internal.DirectConstructorBinding'.
Configure your services to use one that can.
Coloquei o Tools 2.1.0
--------------------------------------------------------------------------------
SESSAO E O ESTADO DA APLICACAO
-ASP.NET Core
-Session - Microsoft.AspNetCore.Session
Oservidor mant�m uma sessao por tempo limitado ap�s a ultima requisi�ao
Voce pode definir o tempo limite da sessao ou usar o valor padrao que
� 20 minutos
Configura�ao Sessao
Classe Startup deve conter
-Qualquer um dos caches de mem�ria IDistributedCache.
-Uma chamada a AddSession em ConfigureServices()
-A chamada UseSession em Configure()
HttpContext.Session.SetString(SessionKeyNome,"Macoratti");
HttpContext.Session.SetInt32(SessionKeyIdade,23);
---------------------------------------------------------------
Implementacao o Carrinho o Carrinho de Compras
Naclasse Startup
1)m�todo ConfigureServices:
-Registrar a interface IHttpContextoAcessor
-Obter um carrinho de compra da Session:GetCarrinho()
-Configurar a Sessao
2) m�todo Configure
-Ativar o uso da Sessao:app.UseSession()
-------------
Adicionamos CarrinhoCompra.cs na pasta Models
nele ele coloca uma string como id ,que usa o struct GUid que �
um identificador unico global:um valor de 16 bytesque, se gerado
randomicamente, ir� geral um identificador quase �nico
operador ? que vai retornar null se o <lkdlkas> esse operador for nulo
depois de fazer todas essas funcoes vamos no arquivo Startup.cs e add o servi�o
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
------------------------------------------------------------------
IMPLEMENTANDO O CONTROLLER DO CARRINHO DE COMPRAS
---------------------------------------------------------------
Criando a p�gina inicial-Lanches Preferidos
--------------------------------------------------
Apresentando as ViewComponentes
View Components
Criando umaViewComponent(VC)
2.O resultado que ela retorna(uma View)
<vc:nome_vc parm="...."></vc:nome_vc>
Devemos usar a diretiva:@addTagHelper,nomeAssembly
ReturnViewComponent("nome_vc",new{param=".."})
-Public IActionResultIndexVC()
{
-return ViewComponent("Lista",new{sequencia=".."});
}
---------------------------------------------------------
IMPLEMENTANDO UMA VIEWCOMPONENT
Definindo a classe
-Criar uma pasta Components
-Criar a classe CarrinhoCompraResumo que deriva de ViewComponent
-Definir o c�digo do m�todo Invoke
Definindo a View
-Criar uma pasta Components na pasta Shared
-Criar pasta CarrinhoCompraResumo dentro da pasta Components
-Criar a view Default.cshtml
Vamos fazer isso tudo para usar nossa viewComponent na nossa view de layout para
exibir um icone do carrinho de compras
e a quantidade de itens que o carrinho possui
-----------------------------------------------------------
APRESENTANDO AS TAGHELPERS
Tag Helpers
As taghelpers permitem que o c�digo do lado do servidor participe na criacao
e renderizacao de elementos HTML em arquivos Razor
Elas sao uma sintaxe alternativa aos Html Helpers e obt�m o mesmo resultado
final gerando o c�digo HTML.A sintaxe parece com HTML(elementos e atributos),
[mas � processado pelo Razor no servidor]
------------------------------------------------------------------
Criando uma TagHelper
--------------------------------------------------------------------
ROTAS-DEFIINDO UMA NOVA ROTA DE APLICACAO
OBS:
template:"{controller=Home}/{action=Index}/{id?}");
se chamarmos /Home/INdex/17 ou /Home/Index ou /Home ou /
todas vao chamar a acima pq � padrao
--------------------------------------------------------------
CRIANDO UM VIEW COMPONENT PARA EXIBIR NOVOS ITENS DE MENU
----------------------------------------------------
EXIBINDO DETALHES DE UM LANCHE
Incluir bot�o para selecionar lanche e link para exibir detalhes do lanche
1-Ajustar a PartialView _LancheResumo
2-Criar o m�todo Action Detail no controlodador LancheController
3-Criar a View Details.cshtml
usando a Layout n � parcial
--------------------------------------------------------------------------------
SECAO 5
EXPANDINDO O MODELO DE DOMINIO - PEDIDOS
-----------------------------------------------------------------
CRIANDO O REPOSITORIO PARA PEDIDOS
---------------------------------------------------------------------
Procurando Lanches-Search
----------------------------------------------------------------------
SECTION ^6:Autenticacao e Autoriza�ao -Identity
AUTORIZACAO E AUTORIZACAO
----------------------------------------------------
USANDO O IDENTITY
Identity
-Sistema de associacao que permite registrar usu�rio e criar
conta para login
Pacotes necess�rio:
Microsoft.AspNetCore.All
Microsoft.AspNetCore.Identity
Microsoft.AspNetCore.Identity.EntityFrameworkCore
services.AddIdentity<IdentityUser, IdentityRole>()
.AddEntityFrameworkStores<AppDbContext>()
.AddDefaultTokenProviders();
app.UseAuthentication();
-------------------------------------------------
IMPLEMENTANDO O LOGIN
criamos
AccountController e LoginViewModel
------------------------------------------------------------
IMPLEMENTANDO O REGISTRO
Registro de Usu�rio
-Controlador AccountController
----------------------------------------------------
CRIANDO AS VIEWS LOGIN E REGISTER
[ERROR]--------
para deixar de ficar os campos vermelhor no SSMS ir em EDIT,intelissense,limpar
cache
Falahando ao registrar
instalei versoes 2.2.0 dos nuget enttity que pediu acima