SQL Internal Ops Conference
SQL Internal Ops Conference Priscila Mayumi Sato Microsoft Community Contributor (MCC) http://dev.mayogax.me/ @MayogaX Scrips gerados pelo Entity Framework
SQL Internal Ops Conference O Entity Framework é um Object-relational mapping, ou seja, ele mapeia um banco de dados relacional para objetos e cuida do meio de caminho entre uma aplicação (C#) e um banco de dados (SQL) http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport Entity Framework, chamado pelo time da Ado.Net como “Magic Unicorn”
SQL Internal Ops Conference “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 .NetBr http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
SQL Internal Ops Conference Mas ORMs só geram código de leitura, atualização e exclusão de linhas, né? Então qual o problema? SELECT [Extent1].[Id] AS [Id], [Extent1].[Title] AS [Title], [Extent1].[Description] AS [Description] FROM [dbo].[Mangas] AS [Extent1]
SQL Internal Ops Conference E como eu pego essas querys, tia? Ir debugando seu código C# Usando a classe: System.Data.Entity.Infrastructure.DbQuery (por exemplo) Exemplo de resultado: http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport SELECT [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]
SQL Internal Ops Conference E se eu te disser que o Entity Framework (e outros ORMs) geram scripts de criação de base de dados? E se eu te disser que também criam scripts para alteração de base de dados?
SQL Internal Ops Conference O Entity Framework possui dois caminhos para gerar banco de dados: Model First Code First Também possui 3 estratégias para geração de banco de dados DropCreateDatabaseIfModelChanges CreateDatabaseIfNotExists DropCreateDatabaseAlways http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
SQL Internal Ops Conference Calma, mas o mundo não está perdido! Quando o banco é gerado pelo Model First é mostrado o código SQL antes de gera-lo. Para gerar o banco definitivamente você precisa rodar o código gerado (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
SQL Internal Ops Conference -- -------------------------------------------------- -- Creating all tables -- -------------------------------------------------- -- Creating table Manga' CREATE TABLE [dbo].[Manga] ( [Id] int IDENTITY(1,1) NOT NULL ); GO -- -------------------------------------------------- -- Creating all PRIMARY KEY constraints -- -------------------------------------------------- -- Creating primary key on [Id] in table „Manga' ALTER TABLE [dbo].[Manga] ADD CONSTRAINT [PK_Manga] PRIMARY KEY CLUSTERED ([Id] ASC); GO http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
SQL Internal Ops Conference E a tal alteração do banco de dados? Entity Framework Migrations é um meio de manter um controle de versões sobre a estrutura (e não os dados) da sua base. Todo banco de dados gerado pelo Code First possui uma tabela do sistema chamada _MigrationHistory onde é guardado as mudanças da estrutura e a versão do Entity Framework. http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
SQL Internal Ops Conference O código das alterações fica em C# numa pasta chamada Migrations no 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 o parâmetro –script, que mostra numa janela nova o script da alteração. http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
SQL Internal Ops Conference Exemplo de uso de Migration: Adicione um campo na sua POCO. Na console do nuget rode o comando: Add-Migration NomeMigration Depois rode o comando: Update-Database –script Vai abrir em outra janela o script: ALTER TABLE [dbo].[Mangas] ADD [Mangaka] [nvarchar](max) http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
SQL Internal Ops Conference http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
SQL Internal Ops Conference http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport Obrigada Dúvidas, sugestões, criticas ou convites para jogar RPG?

Scripts Entity Framework

  • 1.
  • 2.
    SQL Internal Ops Conference PriscilaMayumi Sato Microsoft Community Contributor (MCC) http://dev.mayogax.me/ @MayogaX Scrips gerados pelo Entity Framework
  • 3.
    SQL Internal Ops Conference OEntity Framework é um Object-relational mapping, ou seja, ele mapeia um banco de dados relacional para objetos e cuida do meio de caminho entre uma aplicação (C#) e um banco de dados (SQL) http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport Entity Framework, chamado pelo time da Ado.Net como “Magic Unicorn”
  • 4.
    SQL Internal Ops Conference “Nãoconfio 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 .NetBr http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
  • 5.
    SQL Internal Ops Conference MasORMs só geram código de leitura, atualização e exclusão de linhas, 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.
    SQL Internal Ops Conference Ecomo eu pego essas querys, tia? Ir debugando seu código C# Usando a classe: System.Data.Entity.Infrastructure.DbQuery (por exemplo) Exemplo de resultado: http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport SELECT [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.
    SQL Internal Ops Conference Ese eu te disser que o Entity Framework (e outros ORMs) geram scripts de criação de base de dados? E se eu te disser que também criam scripts para alteração de base de dados?
  • 8.
    SQL Internal Ops Conference OEntity Framework possui dois caminhos para gerar banco de dados: Model First Code First Também possui 3 estratégias para geração de banco de dados DropCreateDatabaseIfModelChanges CreateDatabaseIfNotExists DropCreateDatabaseAlways http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
  • 9.
    SQL Internal Ops Conference Calma,mas o mundo não está perdido! Quando o banco é gerado pelo Model First é mostrado o código SQL antes de gera-lo. Para gerar o banco definitivamente você precisa rodar o código gerado (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.
    SQL Internal Ops Conference ---------------------------------------------------- -- Creating all tables -- -------------------------------------------------- -- Creating table Manga' CREATE TABLE [dbo].[Manga] ( [Id] int IDENTITY(1,1) NOT NULL ); GO -- -------------------------------------------------- -- Creating all PRIMARY KEY constraints -- -------------------------------------------------- -- Creating primary key on [Id] in table „Manga' ALTER TABLE [dbo].[Manga] ADD CONSTRAINT [PK_Manga] PRIMARY KEY CLUSTERED ([Id] ASC); GO http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
  • 11.
    SQL Internal Ops Conference Ea tal alteração do banco de dados? Entity Framework Migrations é um meio de manter um controle de versões sobre a estrutura (e não os dados) da sua base. Todo banco de dados gerado pelo Code First possui uma tabela do sistema chamada _MigrationHistory onde é guardado as mudanças da estrutura e a versão do Entity Framework. http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
  • 12.
    SQL Internal Ops Conference Ocódigo das alterações fica em C# numa pasta chamada Migrations no 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 o parâmetro –script, que mostra numa janela nova o script da alteração. http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport
  • 13.
    SQL Internal Ops Conference Exemplode uso de Migration: Adicione um campo na sua POCO. Na console do nuget rode o comando: Add-Migration NomeMigration Depois rode o comando: Update-Database –script Vai 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.
  • 15.