Criação de uma aplicação Web ASP.NET MVC usando Code First



Documentos relacionados
Connection String usada por uma Class Library

Criação de uma aplicação Web ASP.NET MVC 4

Resumo Aplicação MVC Contoso University

Aplicação MVC com Class Library

Bem vindos ao Curso de ASP.NET MVC 3 Razor e C#

Criar uma aplicação JPA2 com EclipseLink e H2

Construindo Aplicações com ASP.NET MVC 2.0 Aula 03 Luiz Alberto Ferreira Gomes. Ciência da Computação da PUC Minas

ASP.NET MVC. View Engine: linguagem usada para gerar código HTML. Duas opções: Razor View Engine ou ASPX View Engine. Selecionar Razor.

Guia e Utilização do Visual Studio 6.0

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)

Laboratório 3 Controllers

Criação de um Web Services em.net

Criando & Consumindo um WebService com ASP.NET 2.0 Publicado em: 25 de Agosto de 2007 Por Herman Ferdinando Arais

Projeto de Banco de Dados: Empresa X

PROJETOS EXEMPLO DE ASP.NET MVC

Construindo Aplicações com ASP.NET MVC 2.0 Aula 02 Luiz Alberto Ferreira Gomes. Ciência da Computação da PUC Minas

P S I 2. º A N O F 5 M E S T R E / D E T A L H E E P E S Q U I S A. Criar uma relação mestre-detalhe. Pesquisa de informação

A interface do Microsoft Visual Studio 2005

Publicar uma aplicação ASP.NET Core com base de dados SqlServer no Azure usando Visual Studio e um perfil para publicação (publish profile)

ASP.NET Gerando relatórios com o ReportViewer

Consulta de endereço através do Cep

Criação de um Web Services em.net

Forms Authentication em ASP.NET

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Microsoft Visual Studio 2010 C# Volume II

Bases de Dados. Lab 7: Desenvolvimento de aplicações com PHP

Aplicação ASP.NET MVC Cliente de Aplicação Web API

Textos Legais. TL Internet. Legislativa. Manual de Implantação

Módulo 3936 ASP.NET. Financiado pelo FSE

Bases de Dados. Lab 1: Introdução ao ambiente

Tarefa Orientada 1 Base de Dados Editora

Iniciar o Data Adapter Configuration Wizard. Toolbox Data Duplo clique em OleDbDataAdapter. Botão next na caixa de diálogo

ESUS SAMU V INSTRUÇÕES PARA INSTALAÇÃO

Universidade da Beira Interior. Sistemas Distribuídos /2015 Curso: Engª Informática. Folha 11. JAX-RS: Java API for RESTful Web Services

Construindo uma ASP.Net MVC 4 Web Application usando Bootstrap no front-end

Aplicação ASP.NET MVC Cliente de Aplicação Web API (com Class Library)

Microsoft Office FrontPage 2003

Prova de pré-requisito

Seguindo o modelo descrito nas Tabelas 1 e 2, crie os arquivos utilizando a versão doo Excel que você tiver disponível.

Conhecendo o Visual FoxPro 8.0 Parte 1

Disciplina: INF Programação I. 1 a aula prática Introdução ao ambiente do Microsoft Visual Studio 2010

Oracle SQL Developer

Acesso a Dados: com Wizard (sem escrever código), e Programaticamente

MICROSOFT ACCESS MICROSOFT ACCESS. Professor Rafael Vieira Professor Rafael Vieira

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Aplicações de Escritório Electrónico

AJAX no GASweb. Mas e afinal, para que usamos o AJAX?

Tarefa Orientada 5 Aplic. Manutenção de Facturas de Clientes

NetBeans. Conhecendo um pouco da IDE

Android e Bancos de Dados

Acesso a Dados com Wizard (sem escrever código) e Programaticamente

Solutions for Information Technologies. BIS-Navegador. Manual de Instalação para Microsoft SQL Server

LEITOR DE CARTÕES (Cédulas Profissionais)

Manual do Usuário. Tag List. Tag List Generator. smar FIRST IN FIELDBUS JUL / 02. Tag-List VERSÃO 1.0 TAGLSTC3MP

PACWEB Módulo de Pesquisa MANUAL DO UTILIZADOR

Criação de uma aplicação Web ASP.NET MVC5 usando Code First

Guia do Usuário Windows

Ficha prática nº 7. SGBD Microsoft Access e SQL Server

- O MySQL para além da sua utilização em modo linha de comandos, também pode ser utilizado através de ferramentas gráficas.

Tarefa Orientada 2 Aplic. Manutenção de Produtos - DataGridView

Introdução à aplicação Web

Tarefa Orientada 19 Triggers

curso de ASP.NET MVC

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

Trabalho Prático Nº1 Introdução ao C#.NET

Software Adobe DreamWeaver. Requisitos para criar aplicações Web

Programação de Computadores I. Conhecendo a IDE Code::Blocks

Sumário. Parte I Introdução Introdução O Rails é ágil Explorando o conteúdo Agradecimentos... 19

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2005/ Valores

Findo o processo de normalização, obtemos o conjunto de tabelas indicado na tabela 1.28.

trigger insert, delete, update

Capítulo 4. Programação em ASP

Criando uma aplicação Web em C# usando o NHibernate

Escrito por Daniel Donda Qui, 06 de Novembro de :21 - Última atualização Qui, 06 de Novembro de :47

Noções de. Microsoft SQL Server. Microsoft SQL Server

Como criar e gerir um blog?

MANUAL DE CONFIGURAÇÃO -ZIMBRA- Ajuda na configuração e utilização do cliente de correio eletrónico

Tutorial. Sincronização e backup de arquivos na Internet (nuvem) Elaborado por: Miguel Marques (Professor de TIC)

1. FILTRAR OS DADOS ATRAVÉS DE FORMULÁRIO (FILTER BY FORM)

2. Utilitários de sistema para ambiente Windows Ferramentas de gestão de ficheiros

Print Audit 6 - Instalação do SQL Server 2008 express R2

Triggers. um trigger permite que uma determinada sequência de comandos SQL seja accionada quando um determinado evento ocorre.

Modelagem de Banco de Dados através do ERwin

Manual de Administração Intranet BNI

Aula Extra Conexão ODBC para aplicações Delphi 7 que usam SQL Server 2005

ASP.Net com MySQL Connector/Net 6.2.5

Principais novidades do Entity Framework 5.0

C# - Conexão com MySQL

Laboratório 1 SQL Server Integration Services

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

Introdução ao IDE Netbeans (Programação Java)

Transcrição:

Criação de uma aplicação Web ASP.NET MVC usando Code First Visual Studio > File > New Project > (Visual C#, Web) ASP.NET MVC 4 Web Application Name: MvcApplication11 Project Template: View Engine: Internet Application Razor Criar o Modelo Models > botão direito do rato: Add > Class > Name: Filme.cs Add Colocar propriedades dentro da classe Filme, que representam um filme na base de dados. using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MvcApplication11.Models public class Filme public int FilmeId get; set; public string Titulo get; set; public DateTime Data get; set; public string Genero get; set; public decimal Preco get; set; Entity Framework Entity Framework (EF) cria automaticamente a base de dados. A API de acesso a dados que foi desenvolvida para o Code First baseia se na classe DbContext. Para o EF coordenar as funcionalidades de gerir os acessos à base de dados, para um dado modelo de dados, temos de criar uma classe derivada da classe DbContext. Nesta classe especificámos que entidades estão incluídas no nosso modelo de dados. Também se podem configurar certos comportamentos do Entity Framework. Criar uma pasta DAL. Dentro desta pasta criar a classe FilmesDbContext derivada de DbContext, que representa o contexto da base de dados, e trata de retribuir (select), guardar (insert), actualizar (update), e apagar (delete) instâncias da classe Filme na base de dados. MvcApplication11 > botão direito do rato: Add > New Folder > DAL DAL > botão direito do rato: Add > Class > Name: FilmesDbContext.cs Add

Acrescentar using System.Data.Entity; para referenciar DbContext e DbSet. Acrescentar using MvcApplication11.Models; para referenciar a classe Filme. using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data.Entity; using MvcApplication11.Models; namespace MvcApplication11.DAL public class FilmesDbContext : DbContext public FilmesDbContext() : base("defaultconnection") public DbSet<Filme> Filmes get; set; Este código cria uma propriedade para cada entity set. No EF, um entity set tipicamente corresponde a uma tabela da base de dados, e uma entidade corresponde a uma linha da tabela. Por omissão Entity Framework usa a SqlConnectionFactory definida na secção de configuração do Entity Framework no web.config, que aponta para o.\sqlexpress. Para usar localdb em vez de SQLExpress colocámos um construtor na subclasse de DbContext especificando o nome da connectionstring public FilmesDbContext() : base("defaultconnection") Em alternativa, poderíamos definir uma connectionstring no web.config, com o nome da classe de contexto. Build > Build Solution Scaffolding para criar Controladores e Vistas Controllers > botão direito do rato: Add > Controller > Controller name: FilmesController Scaffolding options: MVC controller with read/write actions and views, using Entity Framework Model class: Filme (MvcApplication11.Models) Data context class: FilmesDbContext (MvcApplication11.DAL) Views: Razor (CSHTML) Add Executar a aplicação A base de dados é criada pelo Entity Framework.

Na barra de endereços do browser acrescentar /Filmes localhost:xxxx/filmes clicar Create New Titulo: When Harry Met Sally Data: 1/1/1989 Genero: Comédia Preco: 9.99 Create Botão Edit > Save: Surgem erros de validação de campos. Web.config Colocar no web.config da aplicação, dentro do elemento <system.web> o seguinte elemento <globalization culture="en-us" /> Mudar de: <system.web> <compilation debug="true" targetframework="4.0" /> Para: <system.web> <globalization culture="en US" /> <compilation debug="true" targetframework="4.0" /> Culture contém as regras para línguas e países, tais como, formato de números, símbolos de moedas, etc. Inspecionar a base de dados criada automaticamente Mudar da janela Solution Explorer para a janela Server Explorer. Expandir a base de dados DefaultConnection (MvcApplication11) debaixo de Data Connections. Expandir Tables para ver as tabelas que foram criadas. Em cada tabela > Show Table Data Para criar as tabelas dos serviços de autenticação Executar a aplicação Na barra de endereços do browser acrescentar /Account/Login localhost:xxxx/ Account/Login Inspecionar novamente a base de dados criada. Para usar outras edições do SQL Server, saber a connection string que o entity framework está a usar, e inspeccionar as bases de dados criadas ver Nota no fim deste documento.

Método Edit de FilmesController e Vista Edit Classe FilmesController, métodos Edit: // // GET: /Filmes/Edit/5 public ActionResult Edit(int id = 0) Filme filme = db.filmes.find(id); if (filme == null) return HttpNotFound(); return View(filme); // // POST: /Filmes/Edit/5 [HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit(Filme filme) if (ModelState.IsValid) db.entry(filme).state = EntityState.Modified; db.savechanges(); return RedirectToAction("Index"); return View(filme); O 2.º método Edit é precedido pelo atributo HttpPost, o que especifica que este método só é invocado por pedidos POST. O 1.º método Edit poderia ter o atributo HttpGet, mas não é necessário, porque é assumido por omissão. Este método HttpGet só é invocado por pedidos GET. Todos os métodos que criam, editam ou apagam dados devem ser invocados por POST. Modificar dados usando o método de envio GET cria riscos de segurança para além de violar as boas práticas http que especificam que os pedidos GET não devem mudar o estado da aplicação. Processamento do pedido GET Este método recebe o id do Filme a editar. Caso não receba este parâmetro, id=0, o que evita erro de execução. Se o método Find() encontra o filme, retorna o objecto filme para o template vista. Se não encontra o método, HttpNotFound() é invocado. Processamento do pedido POST O mecanismo Model Binder do framework ASP.NET recebe os valores do formulário enviados por POST, cria um objecto Filme, que é passado como parâmetro ao método de acção Edit. ModelState.IsValid verifica se todos os validadores tiveram sucesso. O objecto Filme já existe na base de dados mas sofreu modificações. O método Entry() retorna o objecto DBEntityEntry desta entidade, fornecendo acesso a informação sobre a entidade e à capacidade de alterar essa informação. O estado do objecto é mudado para modificado. SaveChanges() guarda na base de dados todas as modificações feitas no contexto, executando o comando SQL Update para as entidades com a flag Modified. Todas as colunas da

correspondente linha da tabela da base de dados são actualizadas, incluindo as que o utilizador não modificou. Em seguida o controlo é redirigido para o método de acção Index(), que mostra uma listagem dos filmes já com este filme actualizado. Se a validação não teve sucesso o objecto filme que contém os valores recebidos do formulário é retorna para o template vista Edit.cshtml. Template Edit.cshtml @model MvcApplication11.Models.Filme @ ViewBag.Title = "Edit"; <h2>edit</h2> @using (Html.BeginForm()) @Html.ValidationSummary(true) <fieldset> <legend>filme</legend> @Html.HiddenFor(model => model.filmeid) @Html.LabelFor(model => model.titulo) @Html.EditorFor(model => model.titulo) @Html.ValidationMessageFor(model => model.titulo) @Html.LabelFor(model => model.data) @Html.EditorFor(model => model.data) @Html.ValidationMessageFor(model => model.data) @Html.LabelFor(model => model.genero) @Html.EditorFor(model => model.genero) @Html.ValidationMessageFor(model => model.genero) @Html.LabelFor(model => model.preco) @Html.EditorFor(model => model.preco) @Html.ValidationMessageFor(model => model.preco) <p> <input type="submit" value="save" /> </fieldset> </p> <div> @Html.ActionLink("Back to List", "Index") @section Scripts @Scripts.Render("~/bundles/jqueryval")

Nota: Connection Strings para outra edições do SQL Server Se quisermos que o Entity Framework crie a base de dados numa dada edição do Sql Server, podemos acrescentar, no web.config, uma connection string com o nome da subclasse de DbContext criada (FilmesDbContext): 1) Para o Sql Server LocalDb name="filmesdbcontext" connectionstring="data Source=(LocalDb)\v11.0; AttachDbFilename= DataDirectory \FilmesDb.mdf; Integrated Security=True" providername="system.data.sqlclient" /> 2) Para o Sql Server Express name="filmesdbcontext" connectionstring="data Source=.\SQLEXPRESS; Initial Catalog=Filmes; Integrated Security=True" providername="system.data.sqlclient" /> 3) Para o Sql Server Compact Edition name="filmesdbcontext" connectionstring="data Source= DataDirectory \Repositorio.sdf" providername="system.data.sqlserverce.4.0"/> 4) Para o Sql Server (Full Edition) name="filmesdbcontext" connectionstring="data Source=ServerName; Initial Catalog=Filmes; Integrated Security=False; User Id=userid Password=password" providername="system.data.sqlclient" /> Saber a Connection String que o Entity Framework está a usar Para saber qual a connectionstring que o Entity Framework está a usar podemos adicionar um construtor por omissão à subclasse de DbContext criada: public class FilmesDbContext : DbContext public FilmesDbContext() : base("defaultconnection") string s = Database.Connection.ConnectionString; public DbSet<Filme> Filmes get; set; Colocando um break point neste construtor e executando a aplicação em modo debug conseguimos observar a connectionstring. Usar F11 quando a execução parar no break point. EF 5 e Visual Studio 2012: Visual Studio 2012 instala, por omissão, SQL Server LocalDb. Uma instância LocalDb guarda as bases de dados debaixo do directório App_Data.

Explicitando a connectionstring Podemos passar a connectionstring ao construtor de DbContext: public FilmesDbContext() : base( @="Data Source=.; Initial Catalog=Filmes; Integrated Security=True") Ou passar o nome da connectionstring colocada no web.config da aplicação: public FilmeDbContext() : base("filmesdbcontext") Se o Entity Framework não encontra a connectionstring "FilmesDbContext" no ficheiro web.config, assume que "FilmesDbContext" é o nome da base de dados no servidor local Sql Express ou numa instância LocalDb, dependendo da connection factory configurada. Se não se passa qualquer argumento ao construtor de DbContext, Entity Framework procurará uma connectionstring com o nome da classe DbContext criada (FilmesDbContext), no web.config da aplicação. Inspecionar a base de dados criada 1) no Sql Server Express Mudar para a janela Server Explorer, botão direito do rato em Data Connections : Add Connection > Change > Microsoft Sql Server Server name:.\sqlexpress Refresh Use windows Auhentication Select or enter a database name: seleccionar MvcApplication11.Models.FilmesDbContext Test Connection botão direito do rato em Tables > Filmes: Show Table Data 2) no Sql Server Compact Edition Mudar para a janela Server Explorer, botão direito do rato em Data Connections : Add Connection > Change > Microsoft SQL Server Compact 4.0 (.NET Framework Data Provider for Microsoft SQL Server Compact 4.0) Database: > Browse >./App_Data/Filmes.sdf Test Connection Janela Server Explorer > Filmes.sdf > botão direito do rato em Tables > Filmes: > Show Table Data