![Page 1: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/1.jpg)
Microsoft Students to Business Desenvolvimento de Software – 3ª Fase
![Page 2: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/2.jpg)
Desenvolvendo para internet parte V
![Page 3: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/3.jpg)
Acesso a Dados
NET oferece alternativas de acesso aos dados de um banco de dados relacional: Biblioteca de classes ADO.NET Uma API de acesso e manipulação de “baixo nível” TableAdapters e DataSet Tipado Camada de acesso a dados fornecida por geradores de código do Visual Studio baseado no ADO.NET Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida de acesso e manipulação de alto nível
![Page 4: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/4.jpg)
Acesso a Dados
![Page 5: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/5.jpg)
Arquitetura em camadas
![Page 6: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/6.jpg)
OO x Relacional
Questões do modelo Relacional Trabalha-se no modelo dos dados Forte acoplamento com os elementos do modelo ER: tabelas, chaves (primária e estrangeira) Objetos apenas para “uso em memória” Como tratar a questão das chaves primárias? Como tratar a questão das chaves estrangeiras?
![Page 7: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/7.jpg)
OO x Relacional
Exemplo: modelo relacional
Editora
PK codigo
nome
Livro
PK codigo
titulo anoFK1 codEditora
Autor
PK codigo
primeiroNome ultimoNome
LivroAutor
PK,FK1 codLivroPK,FK2 codAutor
![Page 8: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/8.jpg)
OO x Relacional
Questões do modelo OO Trabalha-se em um modelo que agrega dados e operações Como representar as associações entre objetos? Como mapear hierarquias de herança? Qual o ciclo de vida de um objeto persistente?
![Page 9: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/9.jpg)
Exemplo: diagrama de classes
codigonome
Editora
codigotituloano
Livro
codigoprimeiroNomeultimoNome
Autor
0..*1..1 0..*0..*
![Page 10: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/10.jpg)
Exemplo: diagrama de classes
Editora
PK codigo
nome
Livro
PK codigo
titulo anoFK1 codEditora
Autor
PK codigo
primeiroNome ultimoNome
LivroAutor
PK,FK1 codLivroPK,FK2 codAutor
codigonome
Editora
codigotituloano
Livro
codigoprimeiroNomeultimoNome
Autor
0..*1..1 0..*0..*
![Page 11: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/11.jpg)
OO x Relacional
Editora
PK codigo
nome
Livro
PK codigo
titulo anoFK1 codEditora
Autor
PK codigo
primeiroNome ultimoNome
LivroAutor
PK,FK1 codLivroPK,FK2 codAutor
codigonome
Editora
codigotituloano
Livro
codigoprimeiroNomeultimoNome
Autor
0..*1..1 0..*0..*
![Page 12: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/12.jpg)
Mapeamento Objeto-Relacional
Mapeamento Objeto Relacional (O/RM) Técnica que mapeia os conceitos de Objetos para Relacional e vice-versa Vantagens: Produtividade Trabalha-se sempre no mesmo paradigma (OO) Manutenção Baixo acoplamento com o modelo de dados Desempenho??? Porque não fazer tudo em assembler?
![Page 13: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/13.jpg)
Mapeamento Objeto-Relacional
Idéia geral:
Classes Objetos
Estado Comportamento
Tabelas e Relacionamentos Registros Colunas DML e SQL
![Page 14: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/14.jpg)
Entity Framework
Entity Framework é um O/RM que separa o modelo conceitual do físico Permite a programação OO, incluindo herança e “consulta sobre objetos” Permite a mudança do modelo físico sem alteração da lógica de negócio Modelo de memória simples, baseado em Concorrência Otimista com armazenamento em memória (isto é, sem conexão aberta) Aderente ao System.Transaction Feito para suportar múltiplos bancos de dados relacionais Mapeia Tabelas, Views e Stored Procedures
![Page 15: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/15.jpg)
Entity Framework - Componentes
Entity Data Model (EDM) Descreve o modelo conceitual (Objetos!) Entity Data Provider Um provedor para o EDM Entity SQL Uma versão estendida do SQL para o EDM Object Services Adiciona rastreamento de mudanças, identidade de objetos, attach / detach LINQ to Entities Uma implementação do LINQ sobre o EDM
![Page 16: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/16.jpg)
Entity Framework - Arquitetura
Entity Client – EDM, Entity SQL
Entity Framework
Runtime
Data Providers (ADO.NET patterns)
SQL Server Relational DBMS
Web Service
Mod
elin
g M
appi
ng
Brow
sing
Bind
ing
Programming Layers
Code
Gen
Reporting
Sync
Analysis
Search
Entity Services
Mapping
Query and Update
Pipelines
Transactions
Metadata Services
Linq to En))es En)ty SQL
Applications
SqlClient
OtherClient
Non-relational
![Page 17: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/17.jpg)
Entity Framework - Abordagens
New Database
Existing Database
Centrada no Projeto Centrada no código
Database First Reverse engineer model in EF Designer Classes auto-generated from model
Model First Create model in EF Designer Generate BD from model Classes auto-generated from model
Code First Define classes and mapping in code EF Power Tools provide reverse engineer
Code First Define classes and mapping in code Database created from code Migrations apply model changes to database
Fonte: https://msdn.microsoft.com/en-us/data/jj590134
![Page 18: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/18.jpg)
Entity Data Model
Conceptual
Mapping
Storage
Entity Data Model
EDM é um conjunto de modelos (especificado em arquivo XML .edmx) que define o mapeamento objeto-relacional Três modelos: Conceitual (CSDL - Conceptual Schema Definition Language) Mapeamento (MSL - Mapping Specification Language) Armazenamento (SSDL - Storage Schema Definition Language)
![Page 19: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/19.jpg)
EDM – Conceitos Principais
Conceptual
Mapping
Storage
Entity Data Model
Entidade (entity): Representa um objeto do domínio da aplicação Possui um nome único Possui uma chave de entidade Possui dados na forma de propriedades Possui propriedades de navegação (associação entre entidades) Possui chaves estrangeiras (associação entre entidades) Conjunto de entidades (entity set): Representa um contêiner lógico para entidades de um mesmo tipo (inclui tipos derivados)
![Page 20: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/20.jpg)
EDM – Conceitos Principais
Exemplo: CourseManager - Tabelas
![Page 21: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/21.jpg)
EDM – Conceitos Principais
Exemplo: CourseManager - Entidades
![Page 22: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/22.jpg)
EDM – Conceitos Principais
Propriedade (property): Define a estrutura e características dos dados de uma entidade Pode conter dados primitivos ou estuturados (definidos em tipos complexos) Possui facetas (facets) que definem restrições e comportamentos adicionais (valor padrão, se aceita null, tamanho máximo, etc) Propriedade de navegação (navigation property): Propriedade que permite a navegação entre entidades associadas Pode ser apenas unidirecional
![Page 23: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/23.jpg)
EDM – Conceitos Principais
Propriedade (property): Define a estrutura e características dos dados de uma entidade Pode conter dados primitivos ou estuturados (definidos em tipos complexos) Possui facetas (facets) que definem restrições e comportamentos adicionais (valor padrão, se aceita null, tamanho máximo, etc) Propriedade de navegação (navigation property): Propriedade que permite a navegação entre entidades associadas Pode ser apenas unidirecional
![Page 24: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/24.jpg)
EDM – Conceitos Principais
Chave de entidade (entity key): Propriedade(s) utilizada para identificar uma entidade única É de um tipo primitivo, não anulável e imutável Chave estrangeira (foreing key): Propriedade que implementa um relacionamento entre entidades
![Page 25: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/25.jpg)
EDM – Conceitos Principais
Associação (association): Representa o relacionamento binário entre entidades (inclusive autorelacionamento) Cada associação possui duas terminações, anotadas com multiplicidades Um : 1, Zero ou um : 0..1, Muitos : * Uma associação pode possui restrições de integridade referenciais Entidades associadas são acessadas via propriedades de navegação ou chaves estrangeiras Conjunto de associações (association set): Representa um contêiner lógico para associações de um mesmo tipo
![Page 26: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/26.jpg)
LINQ to Entities
Consultas - busca
var companyNameQuery = from cust in nw.Customers where cust.City == "London" select cust.CompanyName; foreach(var customer in companyNameQuery) {…}
![Page 27: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/27.jpg)
Consultas
Quando um consulta é executada, algumas expressões são avaliadas no servidor e outras no cliente Nem todos operadores padrão do LINQ são suportados pelo LINQ to Entities! Veja http://msdn.microsoft.com/en-us/library/bb738550.aspx
![Page 28: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/28.jpg)
Consultas
Propriedades de navegação em relacionamentos 1-1, 1-N ou N-N Necessário carregar dados relacionados: Propriedade LazyLoadingEnabled Indica se objetos relacionados serão carregados automaticamente via propriedade de navegação Dispara uma nova consulta para cada navegação Método Load Carregamento explícito quando necessário Dispara uma nova consulta para cada load Método Include Carregamento imediato Dispara uma consulta única Consulta gerada é mais complexa
![Page 29: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/29.jpg)
Consultas
A consulta abaixo não irá funcionar:
var contato = (from contact in awe.Contact where contact.LastName == "Zhou" select contact).First(); foreach (var pedido in contato.SalesOrderHeader) {
Console.WriteLine(pedido.SalesOrderID); }
Coleção está vazia!
![Page 30: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/30.jpg)
Consultas
Include Recebe como parâmetro um query path que especifica as entidades relacionadas que devem ser carregadas com os dados Uma única requisição é realizada ao BD
var customer = (from contact in awe.Contact .Include("SalesOrderHeader.SalesOrderDetail") where contact.LastName == "Zhou" select contact).First();
![Page 31: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/31.jpg)
Consultas
Load Permite carregar explicitamente as entidades relacionadas Várias requisições são realizadas ao BD Se chamado dentro de um laço foreach, o EDM deve estar configurado com MultipleActiveResultSets=True na string de conexão
Contact customer = (from contact in awe.Contact where contact.LastName == "Zhou" select contact).First(); if (!customer.SalesOrderHeader.IsLoaded) { customer.SalesOrderHeader.Load(); }
![Page 32: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/32.jpg)
Inserção
Criar um novo objeto Construtor Adicionar novos objetos sobre o modelo via métodos Add() Executar método SaveChanges()
Customer cust = new Customer(); cust.CompanyName = "SomeCompany"; cust.City = "London"; cust.CustomerID = "98128"; cust.PostalCode = "55555"; cust.Phone = "555-555-5555"; contexto.Customers.Add (cust); contexto.SaveChanges();
![Page 33: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/33.jpg)
Inserção
Para inserir em um relacionamento: 1-N ou N-N utilizar Add() na coleção referenciada EntityCollection 1-1 utilizar propriedade Value na entidade referenciada EntityReference
SalesOrderDetail sod = new SalesOrderDetail(…); … order.SalesOrderDetail.Add(sod); contexto.SaveChanges();
![Page 34: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/34.jpg)
Alteração
Obter um objeto do modelo Garantir que o objeto esteja sob controle do contexto Alterar o objeto Estado do objeto muda de Unchanged para Modified Executar método SaveChanges()
var cust = (from c in contexto.Customers where c.CustomerID == "ALFKI" select c).First(); cust.ContactName = "New Contact"; contexto.SaveChanges();
![Page 35: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/35.jpg)
Remoção
Obter um objeto do modelo Executar método DeleteObject() Marca objeto para remoção Executar método SaveChanges() Relacionamentos também são removidos
var deleteIndivCust = from cust in contexto.Customers where cust.CustomerID == "98128" select cust; if (deleteIndivCust.Count() > 0){ contexto.Customers.Remove (deleteIndivCust.First()); contexto.SaveChanges(); }
![Page 36: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/36.jpg)
Remoção
Cuidado! Regras de remoção em cascata de entidade relacionadas devem ser especificadas tanto no modelo conceitual quanto na base de dados Entity Framework somente remove entidades relacionadas se elas estiverem em memória e sob gerência do contexto
![Page 37: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/37.jpg)
Laboratório 19
![Page 38: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/38.jpg)
Uso do Entity Framework em uma abordagem Code First (código primeiro) Definir classes de “Modelo”, incluir propriedades para chaves e navegação Conexão ao banco de dados Uso de um contexto EF Uso de uma classe de inicialização Definição de consultas utilizando LINQ to Entities
Abordagem Code First
![Page 39: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/39.jpg)
Conexão ao banco de dados
Lab - Code first
<add name="ContatosDB" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Contatos.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
![Page 40: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/40.jpg)
Uso de um contexto EF
Lab - Code first
public class ContatosDB : DbContext { public DbSet<Contato> Contatos { get; set; } }
EF Context (Repository pattern)
Tabela do BD (operações de CRUD)
![Page 41: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/41.jpg)
classe de inicialização
Lab - Code first
public class ContatosInicializer : DropCreateDatabaseIfModelChanges<ContatosDB> { protected override void Seed(ContatosDB context) { base.Seed(context); var contatos = new List<Contato> { new Contato { Nome="Huginho", Telefone="12345678", HorarioComercial=true }, new Contato { ... }; contatos.ForEach(c => context.Contatos.Add(c)); context.SaveChanges(); } } // Global.asax à Application_Start() Database.SetInitializer<ContatosDB>(new ContatosInicializer());
![Page 42: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/42.jpg)
Laboratório 20
![Page 43: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/43.jpg)
Ferramenta LINQPad http://linqpad.net/ LINQ http://msdn.microsoft.com/en-us/library/bb397926.aspx PLINQ http://msdn.microsoft.com/en-us/library/dd460688.aspx ADO.NET Entity Framework http://msdn.microsoft.com/en-us/library/bb399572.aspx
Aonde Ir?
![Page 44: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/44.jpg)
MSDN http://msdn.microsoft.com Data Developer Center http://msdn.microsoft.com/data
Aonde Ir?
![Page 45: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/45.jpg)
Segurança
![Page 46: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/46.jpg)
Autenticação e Autorização
Autenticação refere-se ao processo de obtenção da credencial do usuário e verificação de sua validade Autorização refere-se ao processo de liberação de acesso a determinados recursos protegidos
![Page 47: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/47.jpg)
Segurança
Arquitetura Os clientes se comunicam com o ASP.NET através do IIS Internet Information Services O ASP.NET fornece recursos de segurança implementados pelo .NET Framework
![Page 48: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/48.jpg)
Segurança no IIS
Autenticação no IIS é uma camada prévia à autenticação no ASP.NET! Mecanismos de autenticação do IIS: Anonymous Solicitações são automaticamente autenticadas Basic Credenciais são transmitidas de forma textual simples pela rede Digest Credenciais são transformadas via hash para serem transmitidas Integrated Windows Credenciais são transformadas de modo semelhante ao login do Windows em um Active Directory
![Page 49: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/49.jpg)
Segurança no IIS
![Page 50: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/50.jpg)
Segurança no ASP.NET
Segurança no ASP.NET Recursos para trabalhar com Autenticação e Autorização Controles específicos API ASP.NET Identity
![Page 51: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/51.jpg)
Autenticação no ASP.NET
Ao criar um novo projeto no Visual Studio deve ser selecionado o mecanismo de autenticação que será configurado
![Page 52: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/52.jpg)
Autenticação no ASP.NET
Opções de configuração do projeto: No Authentication: usuários anônimos Individual User Accounts: ASP.NET Identity (http://www.asp.net/identity) Organizational Accounts: Windows Identity Foundation para usuários com contas no Azure Active Directory ou Windows Server Active Directory Windows Authentication: modulo Windows Authentication do IIS
![Page 53: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/53.jpg)
Autenticação no ASP.NET
![Page 54: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/54.jpg)
Autenticação no ASP.NET
É um subsistema que implementa diferentes mecanismos de autenticação Características: Oferece gerência de usuários, perfis (“profiles”) e grupos (“roles”) Extensível Suporte a Microsoft Account, Google, Facebook, Twitter, etc Suporte a programação assíncrona Baseado no OWIN - Open Web Interface for .NET (http://owin.org/) Diferentes modelos de armazenamento de dados Projeto padrão utiliza o SQL LocalDB com Entity Framework Code First Distribuição de atualizações via NuGet
![Page 55: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/55.jpg)
Autenticação no ASP.NET
Versões: 1.0 – VS 2013 RTM 2.0 – VS 2013 Update 2 2.1 – VS 2013 Update 3
![Page 56: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/56.jpg)
ASP.NET Identity
Estrutura do Template de Projeto padrão no Visual Studio: Configuração: Arquivo Startup.cs: ponto de partida para a configuração do ASP.NET Identity Arquivo App_Start/Startup.Auth.cs: classe parcial (arquivo Startup.cs) com método de configuração do ASP.NET Identity Arquivo App_Start/IdentityConfig.cs: classes para configuração das opções dos elementos de autenticação
![Page 57: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/57.jpg)
ASP.NET Identity
Estrutura do Template de Projeto padrão no Visual Studio: Dados: Arquivo Models/IdentityModels.cs: Classe ApplicationUser define as informações disponíveis sobre o usuário; representa propriedades que serão armazenadas no banco de dados do ASP.NET Identity Classe ApplicationDbContext representa o a base de dados do Entity Framework Classe IdentityHelper possui métodos de utilidade geral
![Page 58: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/58.jpg)
ASP.NET Identity
Objetos básicos:
![Page 59: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/59.jpg)
ASP.NET Identity
Objetos básicos:
![Page 60: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/60.jpg)
Autorização
Configuração via arquivo Web.config Marcação <authorization> dentro de <system.web> com base na identificação de usuário <allow users="..."> para permitir acesso <deny users="..."> para negar acesso com base nos grupos de usuários <allow roles="..."> para permitir acesso <deny roles="..."> para negar acesso Opções Nome do usuário/roles no domínio “*” para todos os usuários “?” para usuários anônimos
![Page 61: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/61.jpg)
Autorização
Exemplo:
<authorization> <allow users="CI"/> <deny users="?"/> </authorization>
![Page 62: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/62.jpg)
Componentes de Autenticação
Exemplo:
Controle Descrição
CreateUserWizard Coletar dados do usuário e criar uma nova conta
Login Controle composto para página de login
LoginStatus Fornece link de loginf ou logout em função do status do usuário
LoginView Permite filtragem de conteúdo em função do status do usuário (se autenticado ou anônimo)
PasswordRecovery Controle composto para página de recuperação de senhas perdidas
ChangePassword Controle composto para página de alteração de senha
![Page 63: Microsoft Students to Business - inf.pucrs.br · Porque não fazer tudo em assembler? Mapeamento Objeto-Relacional Idéia geral: Classes Objetos Estado Comportamento ... (operações](https://reader031.vdocuments.site/reader031/viewer/2022021912/5c5bea0e09d3f24a368c92c9/html5/thumbnails/63.jpg)
Laboratório 21