View
742
Download
1
Category
Preview:
Citation preview
SQL Internal Ops Conference
SQL Internal Ops Conference
Priscila Mayumi SatoMicrosoft 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 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
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
ObrigadaDúvidas, sugestões, criticas ou convites
para jogar RPG?
Recommended