Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
oleh Tom Dykstra
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
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 dimulaivar 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") } };
Bangun solusi, lalu buka jendela Konsol Manajer Paket. Pastikan bahwa ContosoUniversity.DAL masih dipilih sebagai proyek Default.
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 AndaUp
dapat melihat kode yang membuat kolom baru. MetodeUp
membuat kolom saat Anda menerapkan perubahan, danDown
metode menghapus kolom saat Anda mengembalikan perubahan.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 menjalankanSeed
metode .
Menampilkan kolom baru di halaman Instruktur
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.)
Jalankan aplikasi dan klik tautan Instruktur .
Saat halaman dimuat, Anda akan melihat bahwa halaman tersebut memiliki bidang tanggal lahir baru.
Tutup browser.
Menyebarkan pembaruan database
Di Penjelajah Solusi pilih proyek ContosoUniversity.
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.
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.Di toolbar Terbitkan Klik Web One, klik profil penerbitan Penahapan, lalu klik Terbitkan Web.
Jalankan halaman Instruktur dalam penahapan untuk memverifikasi bahwa pembaruan berhasil disebarkan.
Di toolbar Terbitkan Klik Web One, klik profil Terbitkan Produksi, lalu klik Terbitkan Web.
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
Di Visual Studio, buka SQL Server Object Explorer.
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 .
Klik kanan tabel Pengguna, lalu klik Tampilkan Perancang.
Di perancang, tambahkan kolom Komentar dan jadikan nvarchar(128) dan nullable, lalu klik Perbarui.
Dalam kotak Pratinjau Pembaruan Database, klik Perbarui Database.
Membuat halaman untuk menampilkan dan mengedit kolom baru
Di Penjelajah Solusi, klik kanan folder Akun di proyek ContosoUniversity, klik Tambahkan, lalu klik Item Baru.
Buat Formulir Web baru Menggunakan Halaman Master dan beri nama UserInfo.aspx. Terima file Site.Master default sebagai halaman master.
Salin markup berikut ke
MainContent
Content
dalam elemen (yang terakhir dari 3Content
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>
Klik kanan halaman UserInfo.aspx dan klik Tampilkan di Browser.
Masuk dengan kredensial pengguna admin Anda (kata sandi adalah devpwd) dan tambahkan beberapa komentar ke pengguna untuk memverifikasi bahwa halaman berfungsi dengan benar.
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.
Buka wizard Terbitkan Web dengan mengklik kanan proyek ContosoUniversity dan mengklik Terbitkan.
Pilih profil Uji .
Klik tab Pengaturan.
Di bawah DefaultKoneksi, pilih Perbarui database.
Nonaktifkan skrip tambahan yang Anda konfigurasi untuk dijalankan untuk penyebaran awal:
- Klik Konfigurasikan pembaruan database.
- Dalam kotak dialog Konfigurasi Pembaruan Database, kosongkan kotak centang di samping Grant.sql dan aspnet-data-dev.sql.
- Klik Tutup.
Klik tab Pratinjau .
Di bawah Database dan di sebelah kanan DefaultConnection, klik tautan 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.
Tutup kotak dialog Pratinjau Database, lalu klik Terbitkan.
Visual Studio menyebarkan aplikasi yang diperbarui, dan browser terbuka ke beranda.
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.
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.
Tutorial berikutnya menunjukkan kepada Anda cara menjalankan penyebaran dengan menggunakan baris perintah.