Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
por Tom Dykstra
Esta série de tutoriais mostra como implantar (publicar) um projeto de aplicativo Web ASP.NET que inclui um banco de dados SQL Server Compact usando o Visual Studio 2012 RC ou o Visual Studio Express RC 2012 para Web. Você também poderá usar o Visual Studio 2010 se instalar a Atualização de Publicação na Web. Para obter uma introdução à série, consulte o primeiro tutorial da série.
Para obter um tutorial que mostra os recursos de implantação introduzidos após o lançamento do RC do Visual Studio 2012, mostra como implantar SQL Server edições diferentes de SQL Server Compact e mostra como implantar no Serviço de Aplicativo do Azure Aplicativos Web, confira Implantação da Web ASP.NET usando o Visual Estúdio.
Visão geral
Neste tutorial, você faz uma alteração de banco de dados e alterações de código relacionadas, testa as alterações no Visual Studio e implanta a atualização nos ambientes de teste e produção.
Lembrete: se você receber uma mensagem de erro ou algo não funcionar durante o tutorial, marcar página de solução de problemas.
Adicionando uma nova coluna a uma tabela
Nesta seção, você adicionará uma coluna de data de nascimento à Person
classe base para as Student
entidades e Instructor
. Em seguida, atualize a página que exibe os dados do instrutor para que ela exiba a nova coluna.
No projeto ContosoUniversity.DAL , abra Person.cs e adicione a seguinte propriedade no final da Person
classe (deve haver duas chaves de fechamento após ela):
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
[Display(Name = "Birth Date")]
public DateTime? BirthDate { get; set; }
Em seguida, atualize o método Seed para que ele forneça um valor para a nova coluna. Abra Migrations\Configuration.cs e substitua o bloco de código que começa var instructors = new List<Instructor>
com o seguinte bloco de código, que inclui informações de data de nascimento:
var instructors = new List<Instructor>
{
new Instructor { FirstMidName = "Kim", LastName = "Abercrombie", HireDate = DateTime.Parse("1995-03-11"), BirthDate = DateTime.Parse("1918-08-12"), OfficeAssignment = new OfficeAssignment { Location = "Smith 17" } },
new Instructor { FirstMidName = "Fadi", LastName = "Fakhouri", HireDate = DateTime.Parse("2002-07-06"), BirthDate = DateTime.Parse("1960-03-15"), OfficeAssignment = new OfficeAssignment { Location = "Gowan 27" } },
new Instructor { FirstMidName = "Roger", LastName = "Harui", HireDate = DateTime.Parse("1998-07-01"), BirthDate = DateTime.Parse("1970-01-11"), OfficeAssignment = new OfficeAssignment { Location = "Thompson 304" } },
new Instructor { FirstMidName = "Candace", LastName = "Kapoor", HireDate = DateTime.Parse("2001-01-15"), BirthDate = DateTime.Parse("1975-04-11") },
new Instructor { FirstMidName = "Roger", LastName = "Zheng", HireDate = DateTime.Parse("2004-02-12"), BirthDate = DateTime.Parse("1957-10-12") }
};
No projeto ContosoUniversity, abra Instructors.aspx e adicione um novo campo de modelo para exibir a data de nascimento. Adicione-o entre os para a data de contratação e a atribuição do escritório:
<asp:TemplateField HeaderText="Birth Date" SortExpression="BirthDate">
<ItemTemplate>
<asp:Label ID="InstructorBirthDateLabel" runat="server" Text='<%# Eval("BirthDate", "{0:d}") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="InstructorBirthDateTextBox" runat="server" Text='<%# Bind("BirthDate", "{0:d}") %>'
Width="7em"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
(Se o recuo de código ficar fora de sincronia, você poderá pressionar CTRL-K e, em seguida, CTRL-D para reformatar automaticamente o arquivo.)
Crie a solução e abra a janela Console do Gerenciador de Pacotes . Verifique se ContosoUniversity.DAL ainda está selecionado como o projeto Padrão.
Na janela Console do Gerenciador de Pacotes , selecione ContosoUniversity.DAL como o projeto Padrão e, em seguida, insira o seguinte comando:
add-migration AddBirthDate
Quando esse comando for concluído, o Visual Studio abrirá o arquivo de classe que define a nova DbMigration
classe e, no Up
método , você poderá ver o código que cria a nova coluna.
Crie a solução e insira o seguinte comando na janela Console do Gerenciador de Pacotes (verifique se o projeto ContosoUniversity.DAL ainda está selecionado):
update-database
Quando o comando for concluído, execute o aplicativo e selecione a página Instrutores. Quando a página é carregada, você vê que ela tem o novo campo de data de nascimento.
Implantando a atualização do banco de dados no ambiente de teste
Em Gerenciador de Soluções selecione o projeto ContosoUniversity.
Na barra de ferramentas Publicar do Web One Click , selecione o Perfil de publicação de teste e clique em Publicar Web. (Se a barra de ferramentas estiver desabilitada, selecione o projeto ContosoUniversity no Gerenciador de Soluções.)
O Visual Studio implanta o aplicativo atualizado e o navegador é aberto na home page. Execute a página Instrutores para verificar se a atualização foi implantada com êxito. Quando o aplicativo tenta acessar o banco de dados desta página, o Code First atualiza o esquema de banco de dados e executa o Seed
método . Quando a página é exibida, você vê a coluna Data de Nascimento esperada com datas nela.
Implantando a atualização de banco de dados no ambiente de produção
Agora você pode implantar na produção. A única diferença é que você usará app_offline.htm para impedir que os usuários acessem o site e, portanto, atualizem o banco de dados enquanto você estiver implantando alterações. Para a implantação de produção, execute as seguintes etapas:
- Carregue o arquivo deapp_offline.htm no site de produção.
- No Visual Studio, escolha o Perfil de produção na barra de ferramentas Publicar do Web One Click e clique em Publicar Web.
- Exclua o arquivo deapp_offline.htm do site de produção.
Observação
Enquanto o aplicativo estiver em uso no ambiente de produção, você deverá implementar um plano de backup. Ou seja, você deve copiar periodicamente os arquivos School-Prod.sdf e aspnet-Prod.sdf do site de produção para um local de armazenamento seguro e deve manter várias gerações desses backups. Ao atualizar o banco de dados, você deve fazer uma cópia de backup imediatamente antes da alteração. Em seguida, se você cometer um erro e não o descobrir até que o tenha implantado em produção, ainda poderá recuperar o banco de dados para o estado em que ele estava antes de ser corrompido.
Quando o Visual Studio abre a URL da home page no navegador, a página app_offline.htm é exibida. Depois de excluir o arquivo app_offline.htm , navegue até a home page novamente para verificar se a atualização foi implantada com êxito.
Agora você implantou uma atualização de aplicativo que incluiu uma alteração de banco de dados para teste e produção. O próximo tutorial mostra como migrar seu banco de dados de SQL Server Compact para SQL Server Express e SQL Server.