Scripts Entity Framework

1.004 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.004
No SlideShare
0
A partir de incorporações
0
Número de incorporações
128
Ações
Compartilhamentos
0
Downloads
7
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Scripts Entity Framework

  1. 1. SQL InternalOpsConference
  2. 2. SQL Internal OpsConferencePriscila Mayumi SatoMicrosoft Community Contributor (MCC)http://dev.mayogax.me/@MayogaXScrips gerados peloEntity Framework
  3. 3. SQL Internal OpsConferenceO Entity Framework é um Object-relational mapping, ou seja, elemapeia um banco de dados relacional para objetos e cuida do meiode caminho entre uma aplicação (C#) e um banco de dados (SQL)http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sportEntity Framework,chamado pelo time daAdo.Net como “MagicUnicorn”
  4. 4. SQL Internal OpsConference“Não confio em ORM gerando script pro meu banco”-by DBA ciumento em uma mesa de bar“Scripts de ORMs são melhores que scrips de humanos”-by programador C# em uma thread do .NetBrhttp://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
  5. 5. SQL Internal OpsConferenceMas ORMs só geram código de leitura, atualização e exclusão delinhas, né? Então qual o problema?SELECT[Extent1].[Id] AS [Id],[Extent1].[Title] AS [Title],[Extent1].[Description] AS [Description]FROM [dbo].[Mangas] AS [Extent1]
  6. 6. SQL Internal OpsConferenceE como eu pego essas querys, tia?Ir debugando seu código C#Usando a classe:System.Data.Entity.Infrastructure.DbQuery (porexemplo)Exemplo de resultado:http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sportSELECT[Extent1].[Id] AS [Id],[Extent1].[Title] AS [Title],[Extent1].[Description] AS [Description],[Extent1].[Mangaka] AS [Mangaka]FROM [dbo].[Mangas] AS [Extent1]WHERE 1 = [Extent1].[Id]
  7. 7. SQL Internal OpsConferenceE se eu te disser que o Entity Framework (e outros ORMs) geramscripts de criação de base de dados?E se eu te disser que também criam scripts para alteração de basede dados?
  8. 8. SQL Internal OpsConferenceO Entity Framework possui dois caminhos para gerar banco dedados:Model FirstCode FirstTambém possui 3 estratégias para geração de banco de dadosDropCreateDatabaseIfModelChangesCreateDatabaseIfNotExistsDropCreateDatabaseAlwayshttp://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
  9. 9. SQL Internal OpsConferenceCalma, mas o mundo não está perdido!Quando o banco é gerado pelo Model First é mostrado o código SQLantes de gera-lo.Para gerar o banco definitivamente você precisa rodar o códigogerado(Ainda dá tempo de muda-lo).Dá para usar Code First com uma base já existente!http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
  10. 10. SQL Internal OpsConference-- ---------------------------------------------------- Creating all tables-- ---------------------------------------------------- Creating table MangaCREATE TABLE [dbo].[Manga] ([Id] int IDENTITY(1,1) NOT NULL);GO-- ---------------------------------------------------- Creating all PRIMARY KEY constraints-- ---------------------------------------------------- Creating primary key on [Id] in table „MangaALTER TABLE [dbo].[Manga]ADD CONSTRAINT [PK_Manga]PRIMARY KEY CLUSTERED ([Id] ASC);GOhttp://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
  11. 11. SQL Internal OpsConferenceE a tal alteração do banco de dados?Entity Framework Migrations é um meio de manter um controle deversões sobre a estrutura (e não os dados) da sua base.Todo banco de dados gerado pelo Code First possui uma tabela dosistema chamada _MigrationHistory onde é guardado as mudançasda estrutura e a versão do Entity Framework.http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
  12. 12. SQL Internal OpsConferenceO código das alterações fica em C# numa pasta chamada Migrationsno projeto.Ao rodar uma migration (atualização ou volta de versão) o banco éatualizado automaticamente.Você pode pegar o script da alteração e executa-lo na mão, usando oparâmetro –script, que mostra numa janela nova o script daalteração.http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
  13. 13. SQL Internal OpsConferenceExemplo de uso de Migration:Adicione um campo na sua POCO.Na console do nuget rode o comando:Add-Migration NomeMigrationDepois rode o comando:Update-Database –scriptVai abrir em outra janela o script:ALTER TABLE [dbo].[Mangas] ADD [Mangaka] [nvarchar](max)http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
  14. 14. SQL Internal OpsConferencehttp://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
  15. 15. SQL Internal OpsConferencehttp://www.dailymotion.com/video/xh47ia_sara-varone-surf_sportObrigadaDúvidas, sugestões, criticas ou convites parajogar RPG?

×