scripts entity framework

of 15/15
SQL Internal Ops Conference

Post on 21-Aug-2015

728 views

Category:

Technology

1 download

Embed Size (px)

TRANSCRIPT

  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 aplicao (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 OpsConferenceNo confio em ORM gerando script pro meu banco-by DBA ciumento em uma mesa de barScripts de ORMs so 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 cdigo de leitura, atualizao e excluso delinhas, n? Ento 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 cdigo 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 criao de base de dados?E se eu te disser que tambm criam scripts para alterao de basede dados?
  8. 8. SQL Internal OpsConferenceO Entity Framework possui dois caminhos para gerar banco dedados:Model FirstCode FirstTambm possui 3 estratgias para gerao de banco de dadosDropCreateDatabaseIfModelChangesCreateDatabaseIfNotExistsDropCreateDatabaseAlwayshttp://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
  9. 9. SQL Internal OpsConferenceCalma, mas o mundo no est perdido!Quando o banco gerado pelo Model First mostrado o cdigo SQLantes de gera-lo.Para gerar o banco definitivamente voc precisa rodar o cdigogerado(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 alterao do banco de dados?Entity Framework Migrations um meio de manter um controle deverses sobre a estrutura (e no os dados) da sua base.Todo banco de dados gerado pelo Code First possui uma tabela dosistema chamada _MigrationHistory onde guardado as mudanasda estrutura e a verso do Entity Framework.http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
  12. 12. SQL Internal OpsConferenceO cdigo das alteraes fica em C# numa pasta chamada Migrationsno projeto.Ao rodar uma migration (atualizao ou volta de verso) o banco atualizado automaticamente.Voc pode pegar o script da alterao e executa-lo na mo, usando oparmetro script, que mostra numa janela nova o script daalterao.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_sportObrigadaDvidas, sugestes, criticas ou convites parajogar RPG?