Visual Studio kullanarak ASP.NET Web dağıtımı: veritabanı güncelleştirmesi dağıtmaASP.NET Web Deployment using Visual Studio: Deploying a Database Update

Tom Dykstra tarafındanby Tom Dykstra

Başlatıcı projesi indirDownload Starter Project

Bu öğretici serisi, Visual Studio 2012 veya Visual Studio 2010 kullanarak bir ASP.NET Web uygulamasını Azure App Service Web Apps veya üçüncü taraf barındırma sağlayıcısına dağıtmayı (yayımlamayı) gösterir.This tutorial series shows you how to deploy (publish) an ASP.NET web application to Azure App Service Web Apps or to a third-party hosting provider, by using Visual Studio 2012 or Visual Studio 2010. Seriler hakkında daha fazla bilgi için, serideki ilk öğreticiyebakın.For information about the series, see the first tutorial in the series.

Genel bakışOverview

Bu öğreticide, bir veritabanı değişikliği ve ilgili kod değişiklikleri yapar, değişiklikleri Visual Studio 'da test edin ve ardından bu güncelleştirmeyi test, hazırlama ve üretim ortamlarına dağıtın.In this tutorial, you make a database change and related code changes, test the changes in Visual Studio, then deploy the update to the test, staging, and production environments.

Öğreticide ilk olarak Code First Migrations tarafından yönetilen bir veritabanını güncelleştirme ve daha sonra dbDacFx sağlayıcısı kullanılarak bir veritabanının nasıl güncelleşmekte olduğu gösterilmektedir.The tutorial first shows how to update a database that is managed by Code First Migrations, and then later it shows how to update a database by using the dbDacFx provider.

Anımsatıcı: bir hata iletisi alırsanız veya öğreticide ilerlediyseniz bir şey çalışmadıysanız sorun giderme sayfasınıkontrol ettiğinizden emin olun.Reminder: If you get an error message or something doesn't work as you go through the tutorial, be sure to check the troubleshooting page.

Code First Migrations kullanarak bir veritabanı güncelleştirmesi dağıtmaDeploy a database update by using Code First Migrations

Bu bölümde, Student ve Instructor varlıkları için Person taban sınıfına bir Doğum tarihi sütunu eklersiniz.In this section, you add a birth date column to the Person base class for the Student and Instructor entities. Ardından, eğitmen verilerini görüntüleyen sayfayı yeni sütunu görüntüleyecek şekilde güncelleştirin.Then you update the page that displays instructor data so that it displays the new column. Son olarak, değişiklikleri test, hazırlama ve üretime dağıtırsınız.Finally, you deploy the changes to test, staging, and production.

Uygulama veritabanındaki bir tabloya sütun eklemeAdd a column to a table in the application database

  1. Contosouniversity. dal projesinde, Person.cs açın ve Person sınıfının sonuna aşağıdaki özelliği ekleyin (bundan sonra iki kapatma küme ayracı olmalıdır):In the ContosoUniversity.DAL project, open Person.cs and add the following property at the end of the Person class (there should be two closing curly braces following it):

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

    Sonra, Seed yöntemini yeni sütun için bir değer sağlayacak şekilde güncelleştirin.Next, update the Seed method so that it provides a value for the new column. Migrations\configuration.cs ' i açın ve var instructors = new List<Instructor> başlayan kod bloğunu, Doğum tarihi bilgilerini içeren aşağıdaki kod bloğu ile değiştirin:Open Migrations\Configuration.cs and replace the code block that begins var instructors = new List<Instructor> with the following code block which includes birth date information:

    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") }
    };
    
  2. Çözümü oluşturun ve ardından Paket Yöneticisi konsol penceresini açın.Build the solution, and then open the Package Manager Console window. ContosoUniversity. DAL ' nin hala varsayılan projeolarak seçildiğinden emin olun.Make sure that ContosoUniversity.DAL is still selected as the Default project.

  3. Paket Yöneticisi konsolu penceresinde, varsayılan projeolarak contosouniversity. dal ' ı seçin ve aşağıdaki komutu girin:In the Package Manager Console window, select ContosoUniversity.DAL as the Default project, and then enter the following command:

    add-migration AddBirthDate
    

    Bu komut tamamlandığında, Visual Studio yeni DbMigration sınıfını tanımlayan sınıf dosyasını açar ve Up yönteminde yeni sütunu oluşturan kodu görebilirsiniz.When this command finishes, Visual Studio opens the class file that defines the new DbMigration class, and in the Up method you can see the code that creates the new column. Up yöntemi, değişikliği uygularken sütunu oluşturur ve Down yöntemi, değişikliği geri aldığınızda sütunu siler.The Up method creates the column when you are implementing the change, and the Down method deletes the column when you are rolling back the change.

    AddBirthDate_migration_code

  4. Çözümü oluşturun ve ardından Paket Yöneticisi konsol penceresine aşağıdaki komutu girin (contosouniversity. dal projesinin hala seçili olduğundan emin olun):Build the solution, and then enter the following command in the Package Manager Console window (make sure the ContosoUniversity.DAL project is still selected):

    update-database
    

    Entity Framework Up yöntemini çalıştırır ve sonra Seed metodunu çalıştırır.The Entity Framework runs the Up method and then runs the Seed method.

Eğitmenler sayfasında yeni sütunu görüntüleDisplay the new column in the Instructors page

  1. ContosoUniversity projesinde, eğitmenler. aspx ' i açın ve Doğum tarihini göstermek için yeni bir şablon alanı ekleyin.In the ContosoUniversity project, open Instructors.aspx and add a new template field to display the birth date. İşe alma tarihi ve Office ataması için olanlar arasına ekleyin:Add it between the ones for hire date and office assignment:

    <asp:TemplateField HeaderText="Hire Date" SortExpression="HireDate">
        <ItemTemplate>
            <asp:Label ID="InstructorHireDateLabel" runat="server" Text='<%# Eval("HireDate", "{0:d}") %>'></asp:Label>
        </ItemTemplate>
        <EditItemTemplate>
            <asp:TextBox ID="InstructorHireDateTextBox" runat="server" Text='<%# Bind("HireDate", "{0:d}") %>' Width="7em"></asp:TextBox>
        </EditItemTemplate>
    </asp:TemplateField>
    <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>
    <asp:TemplateField HeaderText="Office Assignment" SortExpression="OfficeAssignment.Location">
        <ItemTemplate>
            <asp:Label ID="InstructorOfficeLabel" runat="server" Text='<%# Eval("OfficeAssignment.Location") %>'></asp:Label>
        </ItemTemplate>
        <EditItemTemplate>
            <asp:TextBox ID="InstructorOfficeTextBox" runat="server"
                Text='<%# Eval("OfficeAssignment.Location") %>' Width="7em"
                OnInit="InstructorOfficeTextBox_Init"></asp:TextBox>
        </EditItemTemplate>
    </asp:TemplateField>
    

    (Kod girintileme eşitlenmemiş ise, CTRL + K tuşlarına basabilir ve sonra dosyayı otomatik olarak yeniden biçimlendirmek için CTRL-D ' ye basabilirsiniz.)(If code indentation gets out of sync, you can press CTRL-K and then CTRL-D to automatically reformat the file.)

  2. Uygulamayı çalıştırın ve eğitmenler bağlantısına tıklayın.Run the application and click the Instructors link.

    Sayfa yüklendiğinde, yeni Doğum tarihi alanına sahip olduğunu görürsünüz.When the page loads, you see that it has the new birth date field.

    Doğum tarihi olan eğitmenler sayfası

  3. Tarayıcıyı kapatın.Close the browser.

Veritabanı güncelleştirmesini dağıtmaDeploy the database update

  1. Çözüm Gezgini contosouniversity projesini seçin.In Solution Explorer select the ContosoUniversity project.

  2. Web 'de Yayımla araç çubuğunda, Test yayımlama profili ' ne tıklayın ve ardından Web 'i Yayımla' ya tıklayın.In the Web One Click Publish toolbar, click the Test publish profile, and then click Publish Web. (Araç çubuğu devre dışıysa, Çözüm Gezgini' de contosouniversity projesini seçin.)(If the toolbar is disabled, select the ContosoUniversity project in Solution Explorer.)

    Visual Studio, güncelleştirilmiş uygulamayı dağıtır ve tarayıcı giriş sayfasında açılır.Visual Studio deploys the updated application, and the browser opens to the home page.

  3. Güncelleştirmenin başarıyla dağıtıldığını doğrulamak için eğitmenler sayfasını çalıştırın.Run the Instructors page to verify that the update was successfully deployed.

    Uygulama bu sayfanın veritabanına erişmeye çalıştığında, Code First veritabanı şemasını güncelleştirir ve Seed metodunu çalıştırır.When the application tries to access the database for this page, Code First updates the database schema and runs the Seed method. Sayfa görüntülendiğinde, içindeki tarihlerle birlikte beklenen Doğum tarihi sütununu görürsünüz.When the page displays, you see the expected Birth Date column with dates in it.

  4. Web 'de Yayımla araç çubuğunda, hazırlama yayımlama profili ' ne tıklayın ve ardından Web 'i Yayımla' ya tıklayın.In the Web One Click Publish toolbar, click the Staging publish profile, and then click Publish Web.

  5. Güncelleştirmenin başarıyla dağıtıldığını doğrulamak için hazırlama aşamasında eğitmenler sayfasını çalıştırın.Run the Instructors page in staging to verify that the update was successfully deployed.

  6. Web 'de Yayımla araç çubuğunda, Üretim yayımlama profili ' ne tıklayın ve ardından Web 'i Yayımla' ya tıklayın.In the Web One Click Publish toolbar, click the Production publish profile, and then click Publish Web.

  7. Güncelleştirmenin başarıyla dağıtıldığını doğrulamak için üretimde eğitmenler sayfasını çalıştırın.Run the Instructors page in production to verify that the update was successfully deployed.

    Bir veritabanı değişikliğini içeren gerçek bir üretim uygulaması güncelleştirmesi için, önceki öğreticide gördüğünüz gibi app_offline. htm' yi kullanarak dağıtım sırasında uygulamayı çevrimdışı duruma de çevrimdışına almanız gerekir.For a real production application update that includes a database change you would also typically take the application offline during deployment by using app_offline.htm, as you saw in the previous tutorial.

DbDacFx sağlayıcısını kullanarak bir veritabanı güncelleştirmesi dağıtmaDeploy a database update by using the dbDacFx provider

Bu bölümde, üyelik veritabanındaki Kullanıcı tablosuna bir Açıklama sütunu ekler ve her bir kullanıcı için açıklamaları görüntülemenize ve düzenlemenize olanak tanıyan bir sayfa oluşturacaksınız.In this section, you add a Comments column to the User table in the membership database and create a page that lets you display and edit comments for each user. Ardından, değişiklikleri test, hazırlama ve üretime dağıtabilirsiniz.Then you deploy the changes to test, staging, and production.

Üyelik veritabanındaki bir tabloya sütun eklemeAdd a column to a table in the membership database

  1. Visual Studio 'da SQL Server Nesne Gezginiaçın.In Visual Studio, open SQL Server Object Explorer.

  2. Expand (LocalDB) \v11.0, veritabanları' nı genişletin, ASPNET-ContosoUniversity ( ASPNET-contosouniversity-prod) öğesini genişletin ve ardından Tablolar' ı genişletin.Expand (localdb)\v11.0, expand Databases, expand aspnet-ContosoUniversity (not aspnet-ContosoUniversity-Prod) and then expand Tables.

    SQL Server düğümü altında (LocalDB) \v11.0 görmüyorsanız, SQL Server düğümüne sağ tıklayıp SQL Server Ekle' ye tıklayın.If you don't see (localdb)\v11.0 under the SQL Server node, right-click the SQL Server node and click Add SQL Server. Sunucuya Bağlan Iletişim kutusunda sunucu adıolarak (LocalDB) \v11.0 girin ve ardından Bağlan' a tıklayın.In the Connect to Server dialog box enter (localdb)\v11.0 as the Server name, and then click Connect.

    ASPNET-Contosoüniversitesi' ni görmüyorsanız, projeyi çalıştırın ve yönetici kimlik bilgilerini (parola devpwd) kullanarak oturum açın ve SQL Server Nesne Gezgini penceresini yenileyin.If you don't see aspnet-ContosoUniversity, run the project and log in using the admin credentials (password is devpwd), and then refresh the SQL Server Object Explorer window.

  3. Kullanıcılar tablosuna sağ tıklayın ve sonra Tasarımcı görüntüle' ye tıklayın.Right-click the Users table, and then click View Designer.

    SSOX Görünüm Tasarımcısı

  4. Tasarımcıda bir Açıklama sütunu ekleyin ve bunu nvarchar (128) ve null yapılabilir yapın ve ardından Güncelleştir' e tıklayın.In the designer, add a Comments column and make it nvarchar(128) and nullable, and then click Update.

    Açıklama sütunu ekleme

  5. Veritabanı güncelleştirmelerini Önizle kutusunda veritabanını güncelleştir' e tıklayın.In the Preview Database Updates box, click Update Database.

    Veritabanı güncelleştirmelerini Önizle

Yeni sütunu göstermek ve düzenlemek için bir sayfa oluşturunCreate a page to display and edit the new column

  1. Çözüm Gezgini, contosouniversity projesindeki Hesap klasörüne sağ tıklayın, Ekle' ye ve ardından Yeni öğe' ye tıklayın.In Solution Explorer, right-click the Account folder in the ContosoUniversity project, click Add, and then click New Item.

  2. Ana sayfayı kullanarak yeni bir Web formu oluşturun ve bunu UserInfo. aspxolarak adlandırın.Create a new Web Form Using Master Page and name it UserInfo.aspx. Varsayılan site. Master dosyasını ana sayfa olarak kabul edin.Accept the default Site.Master file as the master page.

  3. Aşağıdaki işaretlemeyi MainContent Content öğesine kopyalayın (3 Content öğelerinden son):Copy the following markup into the MainContent Content element (the last of the 3 Content elements):

    <h2>User Information</h2>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" 
            SelectCommand="SELECT UserId, UserName, Comments FROM [Users]" 
            UpdateCommand="UPDATE [Users] SET [UserName] = @UserName, [Comments] = @Comments WHERE [UserId] = @UserId">
            <DeleteParameters>
                <asp:Parameter Name="UserId" Type="Object" />
            </DeleteParameters>
            <UpdateParameters>
                <asp:Parameter Name="UserId" Type="Object" />
                <asp:Parameter Name="UserName" Type="String" />
                <asp:Parameter Name="Comments" Type="String" />
            </UpdateParameters>
        </asp:SqlDataSource>
    
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="UserId" DataSourceID="SqlDataSource1">
            <Columns>
                <asp:CommandField ShowEditButton="True" />
                <asp:BoundField DataField="UserName" HeaderText="UserName" SortExpression="UserName" />
                <asp:BoundField DataField="Comments" HeaderText="Comments" SortExpression="Comments" />
            </Columns>
        </asp:GridView>
    
  4. UserInfo. aspx sayfasına sağ tıklayın ve Tarayıcıda görüntüle' ye tıklayın.Right-click the UserInfo.aspx page and click View in Browser.

  5. Yönetici Kullanıcı kimlik bilgilerinizle (parola devpwd) oturum açın ve sayfanın düzgün çalıştığını doğrulamak için bir kullanıcıya bazı yorumlar ekleyin.Log in with your admin user credentials (password is devpwd) and add some comments to a user to verify that the page works correctly.

    UserInfo sayfası

  6. Tarayıcıyı kapatın.Close the browser.

Veritabanı güncelleştirmesini dağıtmaDeploy the database update

DbDacFx sağlayıcısını kullanarak dağıtmak için, yayımlama profilinde veritabanını güncelleştir seçeneğini belirlemeniz yeterlidir.To deploy by using the dbDacFx provider, you just need to select the Update database option in the publish profile. Bununla birlikte, bu seçeneği kullandığınızda ilk dağıtım için bazı ek SQL betikleri da yapılandırmış olursunuz: Bunlar hala profilde bulunur ve bunların yeniden çalıştırılmasını engellemeniz gerekir.However, for the initial deployment when you used this option you also configured some additional SQL scripts to run: those are still in the profile and you'll have to prevent them from running again.

  1. ContosoUniversity projesine sağ tıklayıp Yayımla' ya tıklayarak Web 'i Yayımla Sihirbazı ' nı açın.Open the Publish Web wizard by right-clicking the ContosoUniversity project and clicking Publish.

  2. Test profilini seçin.Select the Test profile.

  3. Ayarlar sekmesine tıklayın.Click the Settings tab.

  4. DefaultConnectionaltında veritabanını güncelleştir' i seçin.Under DefaultConnection, select Update database.

  5. İlk dağıtım için çalıştırmak üzere yapılandırdığınız ek betikleri devre dışı bırakın:Disable the additional scripts that you configured to run for the initial deployment:

    1. Veritabanı güncelleştirmelerini Yapılandıröğesine tıklayın.Click Configure database updates.
    2. Veritabanı güncelleştirmelerini Yapılandır iletişim kutusunda, ver. SQL ve ASPNET-Data-dev. SQL' ın yanındaki onay kutularını temizleyin.In the Configure Database Updates dialog box, clear the check boxes next to Grant.sql and aspnet-data-dev.sql.
    3. Kapat'ı tıklatın.Click Close.
  6. Önizleme sekmesine tıklayın.Click the Preview tab.

  7. DefaultConnection'un veritabanları ve sağ tarafındaki veritabanı önizleme bağlantısına tıklayın.Under Databases and to the right of DefaultConnection, click the Preview database link.

    Veritabanı önizlemesi

    Önizleme penceresi, veritabanı şemasının kaynak veritabanının şemasıyla eşleşmesini sağlamak için hedef veritabanında çalıştırılacak betiği gösterir.The preview window shows the script that will be run in the destination database to make that database schema match the schema of the source database. Komut dosyası, yeni sütunu ekleyen bir ALTER TABLE komutu içerir.The script includes an ALTER TABLE command that adds the new column.

  8. Veritabanı önizlemesi iletişim kutusunu kapatın ve ardından Yayımla' ya tıklayın.Close the Database Preview dialog box, and then click Publish.

    Visual Studio, güncelleştirilmiş uygulamayı dağıtır ve tarayıcı giriş sayfasında açılır.Visual Studio deploys the updated application, and the browser opens to the home page.

  9. Güncelleştirmenin başarıyla dağıtıldığını doğrulamak için UserInfo sayfasını (giriş sayfası URL 'sine Hesap/UserInfo. aspx ekleyin) çalıştırın.Run the UserInfo page (add Account/UserInfo.aspx to the home page URL) to verify that the update was successfully deployed. Yönetici ve devpwdgirerek oturum açmanız gerekir.You'll have to log in by entering admin and devpwd.

    Tablolardaki veriler varsayılan olarak dağıtılır ve çalıştırmak için bir veri dağıtım betiği yapılandırmadıysanız, geliştirmede eklediğiniz yorumu bulamayacaksınız.Data in tables is not deployed by default, and you didn't configure a data deployment script to run, so you won't find the comment that you added in development. Değişikliğin veritabanına dağıtıldığını ve sayfanın doğru şekilde çalıştığını doğrulamak için şimdi hazırlama aşamasında yeni bir yorum ekleyebilirsiniz.You can add a new comment now in staging to verify that the change was deployed to the database and the page works correctly.

  10. Hazırlama ve üretime dağıtmak için aynı yordamı izleyin.Follow the same procedure to deploy to staging and production.

    Ek betikleri devre dışı bırakmayı unutmayın.Don't forget to disable the extra scripts. Test profiliyle karşılaştırılan tek fark, hazırlama ve üretim profillerindeki yalnızca bir betiği devre dışı bırakacağından yalnızca ASPNET-prod-Data. SQL' i çalıştıracak şekilde yapılandırılmanızdır.The only difference compared to the Test profile is that you will disable only one script in the Staging and Production profiles because they were configured to run only aspnet-prod-data.sql.

    Hazırlama ve üretim için kimlik bilgileri yönetici ve prodpwd ' dir.The credentials for staging and production are admin and prodpwd.

    Bir veritabanı değişikliğini içeren gerçek bir üretim uygulaması güncelleştirmesi için, önceki öğreticidegördüğünüz şekilde, uygulamayı yayımlamadan ve silmeden önce çevrimdışı. htm_ yükleme sırasında uygulamayı çevrimdışı olarak da çevrimdışına almanız gerekir.For a real production application update that includes a database change you would also typically take the application offline during deployment by uploading app_offline.htm before publishing and deleting it afterward, as you saw in the previous tutorial.

ÖzetSummary

Artık Code First Migrations ve dbDacFx sağlayıcısını kullanarak bir veritabanı değişikliği içeren bir uygulama güncelleştirmesi dağıttınız.You've now deployed an application update that included a database change using both Code First Migrations and the dbDacFx provider.

Doğum tarihi olan eğitmenler sayfası

UserInfo sayfası

Sonraki öğreticide, komut satırını kullanarak dağıtımların nasıl yürütüleceği gösterilmektedir.The next tutorial shows you how to execute deployments by using the command line.