Compartilhar via


Implantando um aplicativo Web ASP.NET com SQL Server Compact usando o Visual Studio ou o Visual Web Developer: Implantando uma atualização de banco de dados – 9 de 12

por Tom Dykstra

Baixar o Projeto Inicial

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.

AddBirthDate_migration_code

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.

Instructors_page_with_birth_date

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.

Instructors_page_with_birth_date_Test

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.

Instructors_page_with_birth_date_Prod

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.