Bagikan melalui


ASP.NET Penyebaran Web menggunakan Visual Studio: Menyebarkan Pembaruan Database

oleh Tom Dykstra

Unduh Proyek Pemula

Seri tutorial ini menunjukkan kepada Anda cara menyebarkan (menerbitkan) aplikasi web ASP.NET ke Azure App Service Web Apps atau ke penyedia hosting pihak ketiga, dengan menggunakan Visual Studio 2012 atau Visual Studio 2010. Untuk informasi tentang seri ini, lihat tutorial pertama dalam seri ini.

Gambaran Umum

Dalam tutorial ini, Anda membuat perubahan database dan perubahan kode terkait, menguji perubahan di Visual Studio, lalu menyebarkan pembaruan ke lingkungan pengujian, penahapan, dan produksi.

Tutorial ini pertama-tama menunjukkan cara memperbarui database yang dikelola oleh Migrasi Pertama Kode, lalu kemudian menunjukkan cara memperbarui database dengan menggunakan penyedia dbDacFx.

Pengingat: Jika Anda mendapatkan pesan kesalahan atau sesuatu tidak berfungsi saat Anda melalui tutorial, pastikan untuk memeriksa halaman pemecahan masalah.

Menyebarkan pembaruan database dengan menggunakan Migrasi Pertama Kode

Di bagian ini, Anda menambahkan kolom tanggal lahir ke Person kelas dasar untuk Student entitas dan Instructor . Kemudian Anda memperbarui halaman yang menampilkan data instruktur sehingga menampilkan kolom baru. Terakhir, Anda menyebarkan perubahan untuk menguji, pentahapan, dan produksi.

Menambahkan kolom ke tabel di database aplikasi

  1. Dalam proyek ContosoUniversity.DAL, buka Person.cs dan tambahkan properti berikut di akhir Person kelas (harus ada dua kurung kurawal penutup mengikutinya):

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

    Selanjutnya, perbarui Seed metode sehingga memberikan nilai untuk kolom baru. Buka Migrations\Configuration.cs dan ganti blok kode yang dimulai var instructors = new List<Instructor> dengan blok kode berikut yang mencakup informasi tanggal lahir:

    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. Bangun solusi, lalu buka jendela Konsol Manajer Paket. Pastikan bahwa ContosoUniversity.DAL masih dipilih sebagai proyek Default.

  3. Di jendela Konsol Manajer Paket, pilih ContosoUniversity.DAL sebagai proyek Default, lalu masukkan perintah berikut:

    add-migration AddBirthDate
    

    Setelah perintah ini selesai, Visual Studio membuka file kelas yang menentukan kelas baru DbMigration , dan dalam metode Anda Up dapat melihat kode yang membuat kolom baru. Metode Up membuat kolom saat Anda menerapkan perubahan, dan Down metode menghapus kolom saat Anda mengembalikan perubahan.

    AddBirthDate_migration_code

  4. Bangun solusi, lalu masukkan perintah berikut di jendela Konsol Manajer Paket (pastikan proyek ContosoUniversity.DAL masih dipilih):

    update-database
    

    Kerangka Kerja Entitas menjalankan Up metode lalu menjalankan Seed metode .

Menampilkan kolom baru di halaman Instruktur

  1. Dalam proyek ContosoUniversity, buka Instructors.aspx dan tambahkan bidang templat baru untuk menampilkan tanggal lahir. Tambahkan antara yang untuk tanggal sewa dan penetapan kantor:

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

    (Jika indentasi kode tidak sinkron, Anda dapat menekan CTRL-K lalu CTRL-D untuk memformat ulang file secara otomatis.)

  2. Jalankan aplikasi dan klik tautan Instruktur .

    Saat halaman dimuat, Anda akan melihat bahwa halaman tersebut memiliki bidang tanggal lahir baru.

    Cuplikan layar halaman Instruktur memperlihatkan Nama, Tanggal Sewa, Tanggal Lahir, dan Penetapan Office.

  3. Tutup browser.

Menyebarkan pembaruan database

  1. Di Penjelajah Solusi pilih proyek ContosoUniversity.

  2. Di toolbar Terbitkan Klik Web One, klik uji profil terbitkan, lalu klik Terbitkan Web. (Jika toolbar dinonaktifkan, pilih proyek ContosoUniversity di Penjelajah Solusi.)

    Visual Studio menyebarkan aplikasi yang diperbarui, dan browser terbuka ke beranda.

  3. Jalankan halaman Instruktur untuk memverifikasi bahwa pembaruan berhasil disebarkan.

    Ketika aplikasi mencoba mengakses database untuk halaman ini, Kode Pertama memperbarui skema database dan menjalankan Seed metode . Saat halaman ditampilkan, Anda akan melihat kolom Tanggal Lahir yang diharapkan dengan tanggal di dalamnya.

  4. Di toolbar Terbitkan Klik Web One, klik profil penerbitan Penahapan, lalu klik Terbitkan Web.

  5. Jalankan halaman Instruktur dalam penahapan untuk memverifikasi bahwa pembaruan berhasil disebarkan.

  6. Di toolbar Terbitkan Klik Web One, klik profil Terbitkan Produksi, lalu klik Terbitkan Web.

  7. Jalankan halaman Instruktur dalam produksi untuk memverifikasi bahwa pembaruan berhasil disebarkan.

    Untuk pembaruan aplikasi produksi nyata yang menyertakan perubahan database, Anda juga biasanya akan membuat aplikasi offline selama penyebaran dengan menggunakan app_offline.htm, seperti yang Anda lihat di tutorial sebelumnya.

Menyebarkan pembaruan database dengan menggunakan penyedia dbDacFx

Di bagian ini, Anda menambahkan kolom Komentar ke tabel Pengguna di database keanggotaan dan membuat halaman yang memungkinkan Anda menampilkan dan mengedit komentar untuk setiap pengguna. Kemudian Anda menyebarkan perubahan untuk menguji, penahapan, dan produksi.

Menambahkan kolom ke tabel dalam database keanggotaan

  1. Di Visual Studio, buka SQL Server Object Explorer.

  2. Perluas (localdb)\v11.0, perluas Database, perluas aspnet-ContosoUniversity (bukan aspnet-ContosoUniversity-Prod) lalu perluas Tabel.

    Jika Anda tidak melihat (localdb)\v11.0 di bawah simpul SQL Server , klik kanan simpul SQL Server dan klik Tambahkan SQL Server. Dalam kotak dialog Sambungkan ke Server masukkan (localdb)\v11.0 sebagai Nama server, lalu klik Sambungkan.

    Jika Anda tidak melihat aspnet-ContosoUniversity, jalankan proyek dan masuk menggunakan kredensial admin (kata sandi adalah devpwd), lalu refresh jendela SQL Server Object Explorer .

  3. Klik kanan tabel Pengguna, lalu klik Tampilkan Perancang.

    Desainer Tampilan SSOX

  4. Di perancang, tambahkan kolom Komentar dan jadikan nvarchar(128) dan nullable, lalu klik Perbarui.

    Menambahkan kolom Komentar

  5. Dalam kotak Pratinjau Pembaruan Database, klik Perbarui Database.

    Pratinjau Pembaruan Database

Membuat halaman untuk menampilkan dan mengedit kolom baru

  1. Di Penjelajah Solusi, klik kanan folder Akun di proyek ContosoUniversity, klik Tambahkan, lalu klik Item Baru.

  2. Buat Formulir Web baru Menggunakan Halaman Master dan beri nama UserInfo.aspx. Terima file Site.Master default sebagai halaman master.

  3. Salin markup berikut ke MainContent Content dalam elemen (yang terakhir dari 3 Content elemen):

    <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. Klik kanan halaman UserInfo.aspx dan klik Tampilkan di Browser.

  5. Masuk dengan kredensial pengguna admin Anda (kata sandi adalah devpwd) dan tambahkan beberapa komentar ke pengguna untuk memverifikasi bahwa halaman berfungsi dengan benar.

    Cuplikan layar memperlihatkan halaman UserInfo yang menampilkan pengujian UserName dan akun pengujian Comment Tom.

  6. Tutup browser.

Menyebarkan pembaruan database

Untuk menyebarkan dengan menggunakan penyedia dbDacFx, Anda hanya perlu memilih opsi Perbarui database di profil penerbitan. Namun, untuk penyebaran awal saat Anda menggunakan opsi ini, Anda juga mengonfigurasi beberapa skrip SQL tambahan untuk dijalankan: yang masih ada di profil dan Anda harus mencegahnya berjalan lagi.

  1. Buka wizard Terbitkan Web dengan mengklik kanan proyek ContosoUniversity dan mengklik Terbitkan.

  2. Pilih profil Uji .

  3. Klik tab Pengaturan.

  4. Di bawah DefaultKoneksi, pilih Perbarui database.

  5. Nonaktifkan skrip tambahan yang Anda konfigurasi untuk dijalankan untuk penyebaran awal:

    1. Klik Konfigurasikan pembaruan database.
    2. Dalam kotak dialog Konfigurasi Pembaruan Database, kosongkan kotak centang di samping Grant.sql dan aspnet-data-dev.sql.
    3. Klik Tutup.
  6. Klik tab Pratinjau .

  7. Di bawah Database dan di sebelah kanan DefaultConnection, klik tautan Pratinjau database .

    Pratinjau Database

    Jendela pratinjau memperlihatkan skrip yang akan dijalankan dalam database tujuan untuk membuat skema database tersebut cocok dengan skema database sumber. Skrip menyertakan perintah ALTER TABLE yang menambahkan kolom baru.

  8. Tutup kotak dialog Pratinjau Database, lalu klik Terbitkan.

    Visual Studio menyebarkan aplikasi yang diperbarui, dan browser terbuka ke beranda.

  9. Jalankan halaman UserInfo (tambahkan Akun/UserInfo.aspx ke URL halaman beranda) untuk memverifikasi bahwa pembaruan berhasil disebarkan. Anda harus masuk dengan memasukkan admin dan devpwd.

    Data dalam tabel tidak disebarkan secara default, dan Anda tidak mengonfigurasi skrip penyebaran data untuk dijalankan, sehingga Anda tidak akan menemukan komentar yang Anda tambahkan dalam pengembangan. Anda dapat menambahkan komentar baru sekarang dalam penahapan untuk memverifikasi bahwa perubahan disebarkan ke database dan halaman berfungsi dengan benar.

  10. Ikuti prosedur yang sama untuk menyebarkan ke penahapan dan produksi.

    Jangan lupa untuk menonaktifkan skrip tambahan. Satu-satunya perbedaan dibandingkan dengan profil Pengujian adalah Anda hanya akan menonaktifkan satu skrip di profil Penahapan dan Produksi karena dikonfigurasi untuk hanya berjalan aspnet-prod-data.sql.

    Kredensial untuk penahapan dan produksi adalah admin dan prodpwd.

    Untuk pembaruan aplikasi produksi nyata yang menyertakan perubahan database, Anda juga biasanya akan membuat aplikasi offline selama penyebaran dengan mengunggah app_offline.htm sebelum menerbitkan dan menghapusnya setelah itu, seperti yang Anda lihat di tutorial sebelumnya.

Ringkasan

Anda sekarang telah menyebarkan pembaruan aplikasi yang menyertakan perubahan database menggunakan Migrasi Pertama Kode dan penyedia dbDacFx.

Cuplikan layar memperlihatkan halaman Instruktur yang menampilkan Nama, Tanggal Sewa, Tanggal Lahir, dan Penetapan Office.

Cuplikan layar halaman UserInfo memperlihatkan pengujian UserName dan akun pengujian Comment Tom.

Tutorial berikutnya menunjukkan kepada Anda cara menjalankan penyebaran dengan menggunakan baris perintah.