Partager via


Déploiement d’une application web ASP.NET avec SQL Server Compact à l’aide de Visual Studio ou de Visual Web Developer : déploiement d’une mise à jour de base de données - 9 sur 12

par Tom Dykstra

Télécharger le projet de démarrage

Cette série de tutoriels vous montre comment déployer (publier) un projet d’application web ASP.NET qui inclut une base de données SQL Server Compact à l’aide de Visual Studio 2012 RC ou Visual Studio Express RC 2012 pour web. Vous pouvez également utiliser Visual Studio 2010 si vous installez la mise à jour de publication web. Pour une présentation de la série, consultez le premier tutoriel de la série.

Pour obtenir un didacticiel qui montre les fonctionnalités de déploiement introduites après la version rc de Visual Studio 2012, montre comment déployer SQL Server éditions autres que SQL Server Compact et montre comment déployer sur Azure App Service Web Apps, consultez déploiement web ASP.NET à l’aide de Visual Studio.

Vue d’ensemble

Dans ce tutoriel, vous allez apporter une modification à la base de données et au code associé, tester les modifications dans Visual Studio, puis déployer la mise à jour dans les environnements de test et de production.

Rappel : si vous recevez un message d’erreur ou si un élément ne fonctionne pas pendant le tutoriel, veillez à case activée la page de résolution des problèmes.

Ajout d’une nouvelle colonne à une table

Dans cette section, vous ajoutez une colonne de date de naissance à la Person classe de base pour les Student entités et Instructor . Ensuite, vous mettez à jour la page qui affiche les données de l’instructeur afin qu’elle affiche la nouvelle colonne.

Dans le projet ContosoUniversity.DAL , ouvrez Person.cs et ajoutez la propriété suivante à la fin de la Person classe (deux accolades fermants doivent suivre) :

[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
[Display(Name = "Birth Date")]
public DateTime? BirthDate { get; set; }

Ensuite, mettez à jour la méthode Seed afin qu’elle fournisse une valeur pour la nouvelle colonne. Ouvrez Migrations\Configuration.cs et remplacez le bloc de code qui commence par var instructors = new List<Instructor> le bloc de code suivant qui inclut les informations de date de naissance :

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") }
};

Dans le projet ContosoUniversity, ouvrez Instructors.aspx et ajoutez un nouveau champ de modèle pour afficher la date de naissance. Ajoutez-le entre ceux pour la date d’embauche et l’affectation de bureau :

<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>

(Si la mise en retrait du code est désynchronisée, vous pouvez appuyer sur CTRL-K, puis ctrl-D pour reformater automatiquement le fichier.)

Générez la solution, puis ouvrez la fenêtre Console du Gestionnaire de package. Assurez-vous que ContosoUniversity.DAL est toujours sélectionné comme projet par défaut.

Dans la fenêtre Console du Gestionnaire de package, sélectionnez ContosoUniversity.DAL comme projet Par défaut, puis entrez la commande suivante :

add-migration AddBirthDate

Une fois cette commande terminée, Visual Studio ouvre le fichier de classe qui définit la nouvelle DbMigration classe, et dans la Up méthode, vous pouvez voir le code qui crée la nouvelle colonne.

AddBirthDate_migration_code

Générez la solution, puis entrez la commande suivante dans la fenêtre Console du Gestionnaire de package (vérifiez que le projet ContosoUniversity.DAL est toujours sélectionné) :

update-database

Une fois la commande terminée, exécutez l’application et sélectionnez la page Instructeurs. Lorsque la page se charge, vous voyez qu’elle a le nouveau champ date de naissance.

Instructors_page_with_birth_date

Déploiement de la mise à jour de base de données dans l’environnement de test

Dans Explorateur de solutions sélectionnez le projet ContosoUniversity.

Dans la barre d’outils Web One Click Publier , sélectionnez le profil de publication de test , puis cliquez sur Publier le web. (Si la barre d’outils est désactivée, sélectionnez le projet ContosoUniversity dans Explorateur de solutions.)

Visual Studio déploie l’application mise à jour et le navigateur s’ouvre sur la page d’accueil. Exécutez la page Instructeurs pour vérifier que la mise à jour a été correctement déployée. Lorsque l’application tente d’accéder à la base de données pour cette page, Code First met à jour le schéma de base de données et exécute la Seed méthode . Lorsque la page s’affiche, vous voyez la colonne Date de naissance attendue avec des dates.

Instructors_page_with_birth_date_Test

Déploiement de la mise à jour de base de données dans l’environnement de production

Vous pouvez maintenant déployer en production. La seule différence est que vous allez utiliser app_offline.htm pour empêcher les utilisateurs d’accéder au site et donc de mettre à jour la base de données pendant le déploiement des modifications. Pour le déploiement en production, effectuez les étapes suivantes :

  • Chargez le fichier app_offline.htm sur le site de production.
  • Dans Visual Studio, choisissez le profil de production dans la barre d’outils Web En un clic Publier , puis cliquez sur Publier le web.
  • Supprimez le fichier app_offline.htm du site de production.

Notes

Lorsque votre application est en cours d’utilisation dans l’environnement de production, vous devez implémenter un plan de sauvegarde. Autrement dit, vous devez copier régulièrement les fichiers School-Prod.sdf et aspnet-Prod.sdf à partir du site de production vers un emplacement de stockage sécurisé, et vous devez conserver plusieurs générations de ces sauvegardes. Lorsque vous mettez à jour la base de données, vous devez effectuer une copie de sauvegarde à partir de immédiatement avant la modification. Ensuite, si vous faites une erreur et ne la découvrez qu’après l’avoir déployée en production, vous pourrez toujours récupérer la base de données à l’état dans lequel elle se trouvait avant qu’elle ne soit endommagée.

Lorsque Visual Studio ouvre l’URL de la page d’accueil dans le navigateur, la page app_offline.htm s’affiche. Après avoir supprimé le fichier app_offline.htm , vous pouvez à nouveau accéder à votre page d’accueil pour vérifier que la mise à jour a bien été déployée.

Instructors_page_with_birth_date_Prod

Vous avez maintenant déployé une mise à jour d’application incluant une modification de base de données à la fois pour le test et la production. Le tutoriel suivant vous montre comment migrer votre base de données de SQL Server Compact vers SQL Server Express et SQL Server.