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 SQL Server - 11 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 2012 RC for 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 tutoriel qui présente 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 des sites web Windows Azure, consultez déploiement web ASP.NET à l’aide de Visual Studio.

Vue d’ensemble

Ce tutoriel vous montre comment déployer une mise à jour de base de données sur une base de données SQL Server complète. Étant donné que Migrations Code First effectue tout le travail de mise à jour de la base de données, le processus est presque identique à ce que vous avez fait pour SQL Server Compact dans le didacticiel Déploiement d’une mise à jour de base de données.

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

Ajout d’une nouvelle colonne à une table

Dans cette section du didacticiel, vous allez apporter une modification à la base de données et les modifications de code correspondantes, puis les tester dans Visual Studio en vue de leur déploiement dans les environnements de test et de production. La modification implique l’ajout d’une OfficeHours colonne à l’entité Instructor et l’affichage des nouvelles informations dans la page web Instructors .

Dans le projet ContosoUniversity.DAL, ouvrez Instructor.cs et ajoutez la propriété suivante entre les HireDate propriétés et Courses :

[MaxLength(50)]
public string OfficeHours { get; set; }

Mettez à jour la classe d’initialiseur afin qu’elle ensemise la nouvelle colonne avec des données de test. Ouvrez Migrations\Configuration.cs et remplacez le bloc de code qui commence var instructors = new List<Instructor> par le bloc de code suivant qui inclut la nouvelle colonne :

var instructors = new List<Instructor>
{
    new Instructor { FirstMidName = "Kim",     LastName = "Abercrombie", HireDate = DateTime.Parse("1995-03-11"), BirthDate = DateTime.Parse("1918-08-12"), OfficeHours = "8-9AM, 4-5PM", 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"), OfficeHours = "6AM-6PM", 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"), OfficeHours = "By appointment only" }
};

Dans le projet ContosoUniversity, ouvrez Instructors.aspx et ajoutez un nouveau champ de modèle pour les heures de bureau juste avant la balise de fermeture </Columns> dans le premier GridView contrôle :

<asp:TemplateField HeaderText="Office Hours">
    <ItemTemplate>
        <asp:Label ID="InstructorOfficeHoursLabel" runat="server" Text='<%# Eval("OfficeHours") %>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
        <asp:TextBox ID="InstructorOfficeHoursTextBox" runat="server" Text='<%# Bind("OfficeHours") %>'
            Width="14em"></asp:TextBox>
    </EditItemTemplate>
</asp:TemplateField>

Générez la solution.

Ouvrez la fenêtre Console du Gestionnaire de package, puis sélectionnez ContosoUniversity.DAL comme projet Par défaut.

Entrez les commandes suivantes :

add-migration AddOfficeHoursColumn

update-database

Exécutez l’application et sélectionnez la page Instructeurs . Le chargement de la page prend un peu plus de temps que d’habitude, car Entity Framework recrée la base de données et l’enfonche avec des données de test.

Instructors_page_with_office_hours

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

Lorsque vous utilisez Migrations Code First, la méthode de déploiement d’une modification de base de données sur SQL Server est la même que pour SQL Server Compact. Toutefois, vous devez modifier le profil de publication de test, car il est toujours configuré pour migrer de SQL Server Compact vers SQL Server.

La première étape consiste à supprimer les transformations chaîne de connexion que vous avez créées dans le tutoriel précédent. Celles-ci ne sont plus nécessaires, car vous allez spécifier chaîne de connexion transformations dans le profil de publication, comme vous l’avez fait avant de configurer l’onglet Package/Publier SQL pour la migration vers SQL Server.

Ouvrez le fichier Web.Test.config et supprimez l’élément connectionStrings . La seule transformation restante dans le fichier Web.Test.config concerne la Environment valeur dans l’élément appSettings .

Vous pouvez maintenant mettre à jour le profil de publication et le publier dans l’environnement de test.

Ouvrez l’Assistant Publier le web , puis basculez vers l’onglet Profil .

Sélectionnez le profil de publication de test .

Sélectionnez l’onglet Settings (Paramètres).

Cliquez sur Activer les améliorations apportées à la publication de la nouvelle base de données.

Dans la zone chaîne de connexion pour SchoolContext, entrez la même valeur que celle que vous avez utilisée dans le fichier de transformationWeb.Test.config dans le tutoriel précédent :

Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True

Sélectionnez Exécuter Migrations Code First (s’exécute au démarrage de l’application). (Dans votre version de Visual Studio, la zone case activée peut être intitulée Appliquer Migrations Code First.)

Dans la zone chaîne de connexion pour DefaultConnection, entrez la même valeur que celle que vous avez utilisée dans le fichier de transformationWeb.Test.config dans le didacticiel précédent :

Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True

Laissez La mise à jour de la base de données désactivée.

Cliquez sur Publier.

Visual Studio déploie les modifications de code dans l’environnement de test et ouvre le navigateur sur la page d’accueil de Contoso University.

Sélectionnez la page Instructeurs.

Lorsque l’application exécute cette page, elle tente d’accéder à la base de données. Migrations Code First vérifie si la base de données est à jour et constate que la dernière migration n’a pas encore été appliquée. Migrations Code First applique la dernière migration, exécute la Seed méthode, puis la page s’exécute normalement. Vous voyez la nouvelle colonne Heures Office avec les données amorcées.

Instructors_page_with_OfficeHours_Test

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

Vous devez également modifier le profil de publication pour l’environnement de production. Dans ce cas, vous allez supprimer le profil existant et en créer un en important un fichier .publishsettings mis à jour. Le fichier mis à jour inclut les chaîne de connexion de la base de données SQL Server sur Cytanium.

Comme vous l’avez vu lors du déploiement dans l’environnement de test, vous n’avez plus besoin de transformations chaîne de connexion dans le fichier de transformationWeb.Production.config. Ouvrez ce fichier et supprimez l’élément connectionStrings . Les transformations restantes concernent la Environment valeur dans l’élément appSettings et l’élément qui restreint l’accès location aux rapports d’erreurs Elmah.

Avant de créer un profil de publication pour la production, téléchargez un fichier .publishsettings mis à jour comme vous l’avez fait précédemment dans le didacticiel Déploiement dans l’environnement de production . (Dans le panneau de configuration Cytanium, cliquez sur Sites web, puis sur le contosouniversity.com site web. Sélectionnez l’onglet Publication web, puis cliquez sur Télécharger le profil de publication pour ce site web.) La raison pour laquelle vous effectuez cette opération est de récupérer la base de données chaîne de connexion dans le fichier .publishsettings. Le chaîne de connexion n’était pas disponible la première fois que vous avez téléchargé le fichier, car vous utilisiez toujours SQL Server Compact et n’aviez pas encore créé la base de données SQL Server sur Cytanium.

Vous pouvez maintenant mettre à jour le profil de publication et le publier dans l’environnement de production.

Ouvrez l’Assistant Publier le web , puis basculez vers l’onglet Profil .

Cliquez sur Gérer les profils, puis supprimez le profil de production.

Fermez l’Assistant Publier le web pour enregistrer cette modification.

Ouvrez à nouveau l’Assistant Publier le web , puis cliquez sur Importer.

Sous l’onglet Connexion , remplacez URL de destination par la valeur appropriée si vous utilisez une URL temporaire.

Cliquez sur Suivant.

Sous l’onglet Paramètres , cliquez sur Activer les améliorations apportées à la publication de la base de données.

Dans la liste déroulante chaîne de connexion schoolContext, sélectionnez le chaîne de connexion Cytanium.

Selecting_Cytanium_connection_string

Sélectionnez Exécuter les migrations code d’abord (s’exécute au démarrage de l’application).

Dans la liste déroulante chaîne de connexion pour DefaultConnection, sélectionnez le chaîne de connexion Cytanium.

Sélectionnez l’onglet Profil , cliquez sur Gérer les profils et renommez le profil « contosouniversity.com - Web Deploy » en « Production ».

Fermez le profil de publication pour enregistrer la modification, puis rouvrez-le.

Cliquez sur Publier. (Pour un site web de production réel, vous devez copier app_offline.htm en production et les placer dans votre dossier de projet avant la publication, puis les supprimer une fois le déploiement terminé.)

Visual Studio déploie les modifications de code dans l’environnement de test et ouvre le navigateur sur la page d’accueil de Contoso University.

Sélectionnez la page Instructeurs.

Migrations Code First met à jour la base de données de la même façon que dans l’environnement de test. Vous voyez la nouvelle colonne Heures Office avec les données amorcées.

Instructors_page_with_OfficeHours_Prod

Vous avez maintenant déployé avec succès une mise à jour d’application qui incluait une modification de base de données, à l’aide d’une base de données SQL Server.

Informations complémentaires

Ceci complète cette série de tutoriels sur le déploiement d’une application web ASP.NET sur un fournisseur d’hébergement tiers. Pour plus d’informations sur l’une des rubriques abordées dans ces didacticiels, consultez le ASP.NET Deployment Content Map sur le site web MSDN.

Remerciements

Je tiens à remercier les personnes suivantes qui ont apporté des contributions significatives au contenu de cette série de tutoriels :