Scripts Entity Framework

951 views
850 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
951
On SlideShare
0
From Embeds
0
Number of Embeds
127
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for 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?

×