Transcript
Page 1: Scripts Entity Framework

SQL Internal Ops Conference

Page 2: Scripts Entity Framework

SQL Internal Ops Conference

Priscila Mayumi SatoMicrosoft Community Contributor (MCC)

http://dev.mayogax.me/ @MayogaX

Scrips gerados pelo Entity Framework

Page 3: Scripts 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”

Page 4: Scripts Entity Framework

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

Page 5: Scripts Entity Framework

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]

Page 6: Scripts Entity Framework

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]

Page 7: Scripts Entity Framework

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?

Page 8: Scripts Entity Framework

SQL Internal Ops Conference

O Entity Framework possui dois caminhos para gerar banco de dados:

Model FirstCode First

Também possui 3 estratégias para geração de banco de dados

DropCreateDatabaseIfModelChangesCreateDatabaseIfNotExistsDropCreateDatabaseAlways

http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport

Page 9: Scripts Entity Framework

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

Page 10: Scripts Entity Framework

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

Page 11: Scripts Entity Framework

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

Page 12: Scripts Entity Framework

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

Page 13: Scripts Entity Framework

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

Page 14: Scripts Entity Framework

SQL Internal Ops Conference

http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport

Page 15: Scripts Entity Framework

SQL Internal Ops Conference

http://www.dailymotion.com/video/xh47ia_sara-varone-surf_sport

ObrigadaDúvidas, sugestões, criticas ou convites

para jogar RPG?


Top Related