microsoft students to business - filipomor.comfilipomor.com/pucrs/[pucrs]_s2b_webforms_fase3.pdf ·...
TRANSCRIPT
![Page 1: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/1.jpg)
MicrosoftStudents to Business
Desenvolvimento de Software – 3ª Fase
![Page 2: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/2.jpg)
Desenvolvendo para internet
parte V
![Page 3: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/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 - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/4.jpg)
Acesso a Dados
![Page 5: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/5.jpg)
Arquitetura em camadas
![Page 6: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/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 - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/7.jpg)
OO x Relacional
Exemplo: modelo relacional
Editora
PK codigo
nome
Livro
PK codigo
titulo
ano
FK1 codEditora
Autor
PK codigo
primeiroNome
ultimoNome
LivroAutor
PK,FK1 codLivro
PK,FK2 codAutor
![Page 8: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/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 - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/9.jpg)
Exemplo: diagrama de classes
codigo
nome
Editora
codigo
titulo
ano
Livro
codigo
primeiroNome
ultimoNome
Autor
0..*1..1 0..*0..*
![Page 10: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/10.jpg)
Exemplo: diagrama de classes
Editora
PK codigo
nome
Livro
PK codigo
titulo
ano
FK1 codEditora
Autor
PK codigo
primeiroNome
ultimoNome
LivroAutor
PK,FK1 codLivro
PK,FK2 codAutor
codigo
nome
Editora
codigo
titulo
ano
Livro
codigo
primeiroNome
ultimoNome
Autor
0..*1..1 0..*0..*
![Page 11: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/11.jpg)
OO x Relacional
Editora
PK codigo
nome
Livro
PK codigo
titulo
ano
FK1 codEditora
Autor
PK codigo
primeiroNome
ultimoNome
LivroAutor
PK,FK1 codLivro
PK,FK2 codAutor
codigo
nome
Editora
codigo
titulo
ano
Livro
codigo
primeiroNome
ultimoNome
Autor
0..*1..1 0..*0..*
![Page 12: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/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 - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/13.jpg)
Mapeamento Objeto-Relacional
Idéia geral:
Classes
Objetos
EstadoComportamento
Tabelas e RelacionamentosRegistros
ColunasDML e SQL
![Page 14: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/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 - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/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 - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/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
Modeling
Mappin
g
Bro
wsi
ng
Bin
din
g
Programming Layers
Code G
en Reporting
Sync
Analysis
Search
Entity Services
Mapping
Query and
Update
Pipelines
Transactions
Metadata
Services
Linq to EntitiesEntity SQL
Applications
SqlClie
ntOtherClien
t
Non-
relational
![Page 17: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/17.jpg)
Entity Framework - Abordagens
NewDatabase
ExistingDatabase
Centrada no Projeto Centrada no código
Database FirstReverse engineer model in EF Designer
Classes auto-generated from model
Model FirstCreate model in EF Designer
Generate BD from model
Classes auto-generated from model
Code FirstDefine classes and mapping in code
EF Power Tools provide reverse engineer
Code FirstDefine 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 - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/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 - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/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 - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/20.jpg)
EDM – Conceitos Principais
Exemplo: CourseManager - Tabelas
![Page 21: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/21.jpg)
EDM – Conceitos Principais
Exemplo: CourseManager - Entidades
![Page 22: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/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 - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/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 - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/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 - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/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 - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/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 - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/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 - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/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 - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/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 - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/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 - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/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 - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/32.jpg)
Inserção
Criar um novo objeto
Construtor ou método estático CreateXXX()
Adicionar novos objetos sobre o modelo via métodos Add(), AddObject(), AddToXXX()
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.AddToCustomers(cust);
contexto.SaveChanges();
![Page 33: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/33.jpg)
Inserção
Criar um novo objeto
Construtor ou método estático CreateXXX()
Adicionar novos objetos sobre o modelo via métodos Add(), AddObject(), AddToXXX()
Executar método SaveChanges()
Customer cust = Customer.CreateCustomer("SomeCompany",
"London","98128","55555","555-555-5555");
contexto.AddToCustomers(cust);
contexto.SaveChanges();
![Page 34: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/34.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 = SalesOrderDetail.CreateSalesOrderDetail(…);
order.SalesOrderDetail.Add(sod);
contexto.SaveChanges();
![Page 35: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/35.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 36: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/36.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 37: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/37.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 38: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/38.jpg)
Laboratório 19
![Page 39: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/39.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 40: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/40.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 41: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/41.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 42: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/42.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 43: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/43.jpg)
Laboratório 20
![Page 44: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/44.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 45: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/45.jpg)
MSDN
http://msdn.microsoft.com
Data Developer Center
http://msdn.microsoft.com/data
Aonde Ir?
![Page 46: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/46.jpg)
Segurança
![Page 47: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/47.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 48: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/48.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 49: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/49.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 50: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/50.jpg)
Segurança no IIS
![Page 51: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/51.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 52: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/52.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 53: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/53.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 54: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/54.jpg)
Autenticação no ASP.NET
![Page 55: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/55.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 56: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/56.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 57: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/57.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 58: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/58.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 59: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/59.jpg)
ASP.NET Identity
Objetos básicos:
![Page 60: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/60.jpg)
ASP.NET Identity
Objetos básicos:
![Page 61: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/61.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 62: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/62.jpg)
Autorização
Exemplo:
<authorization>
<allow users="CI"/>
<deny users="?"/>
</authorization>
![Page 63: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/63.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 64: Microsoft Students to Business - filipomor.comfilipomor.com/PUCRS/[PUCRS]_S2B_WebForms_Fase3.pdf · Entity Framework Framework para mapeamento objeto/relacional LINQ Linguagem embutida](https://reader034.vdocuments.net/reader034/viewer/2022050302/5f6afca89c43dd6d092cf738/html5/thumbnails/64.jpg)
Laboratório 21