Menyebarkan ASP.NET Web Application dengan SQL Server Compact menggunakan Visual Studio atau Visual Web Developer: Menyebarkan SQL Server Database Update - 11 dari 12
oleh Tom Dykstra
Rangkaian tutorial ini menunjukkan kepada Anda cara menyebarkan (menerbitkan) proyek aplikasi web ASP.NET yang menyertakan database SQL Server Compact dengan menggunakan Visual Studio 2012 RC atau Visual Studio Express 2012 RC for Web. Anda juga dapat menggunakan Visual Studio 2010 jika Anda menginstal Pembaruan Penerbitan Web. Untuk pengenalan seri ini, lihat tutorial pertama dalam seri ini.
Untuk tutorial yang menunjukkan fitur penyebaran yang diperkenalkan setelah rilis RC Visual Studio 2012, menunjukkan cara menyebarkan edisi SQL Server selain SQL Server Compact, dan menunjukkan cara menyebarkan ke Windows Azure Web Sites, lihat ASP.NET Web Deployment menggunakan Visual Studio.
Gambaran Umum
Tutorial ini menunjukkan kepada Anda cara menyebarkan pembaruan database ke database SQL Server lengkap. Karena Migrasi Pertama Kode melakukan semua pekerjaan memperbarui database, prosesnya hampir identik dengan apa yang Anda lakukan untuk SQL Server Compact dalam tutorial Menyebarkan Pembaruan Database.
Pengingat: Jika Anda mendapatkan pesan kesalahan atau sesuatu tidak berfungsi saat Anda melalui tutorial, pastikan untuk memeriksa halaman pemecahan masalah.
Menambahkan Kolom Baru ke Tabel
Di bagian tutorial ini Anda akan membuat perubahan database dan perubahan kode yang sesuai, lalu mengujinya di Visual Studio sebagai persiapan untuk menyebarkannya ke lingkungan pengujian dan produksi. Perubahan ini melibatkan penambahan OfficeHours
kolom ke Instructor
entitas dan menampilkan informasi baru di halaman web Instruktur .
Dalam proyek ContosoUniversity.DAL, buka Instructor.cs dan tambahkan properti berikut antara HireDate
properti dan Courses
:
[MaxLength(50)]
public string OfficeHours { get; set; }
Perbarui kelas penginisialisasi sehingga menyemai kolom baru dengan data pengujian. Buka Migrations\Configuration.cs dan ganti blok kode yang dimulai var instructors = new List<Instructor>
dengan blok kode berikut yang menyertakan kolom baru:
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" }
};
Dalam proyek ContosoUniversity, buka Instructors.aspx dan tambahkan bidang templat baru untuk jam kerja tepat sebelum tag penutup </Columns>
di kontrol pertama GridView
:
<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>
Bangun solusinya.
Buka jendela Konsol Manajer Paket , dan pilih ContosoUniversity.DAL sebagai proyek Default.
Masukkan perintah berikut:
add-migration AddOfficeHoursColumn
update-database
Jalankan aplikasi dan pilih halaman Instruktur . Halaman membutuhkan waktu sedikit lebih lama dari biasanya untuk dimuat, karena Kerangka Kerja Entitas membuat ulang database dan menambahkannya dengan data pengujian.
Menyebarkan Pembaruan Database ke Lingkungan Pengujian
Saat Anda menggunakan Migrasi Pertama Kode, metode untuk menyebarkan perubahan database ke SQL Server sama dengan untuk SQL Server Compact. Namun, Anda harus mengubah profil Publikasi pengujian karena masih disiapkan untuk bermigrasi dari SQL Server Compact ke SQL Server.
Langkah pertama adalah menghapus transformasi string koneksi yang Anda buat di tutorial sebelumnya. Ini tidak lagi diperlukan karena Anda akan menentukan transformasi string koneksi di profil penerbitan, seperti yang Anda lakukan sebelum mengonfigurasi tab Paket/Terbitkan SQL untuk migrasi ke SQL Server.
Buka file Web.Test.config dan hapus connectionStrings
elemen . Satu-satunya transformasi yang tersisa dalam file Web.Test.config adalah untuk Environment
nilai dalam appSettings
elemen .
Sekarang Anda dapat memperbarui profil penerbitan dan menerbitkan ke lingkungan pengujian.
Buka wizard Terbitkan Web , lalu beralihlah ke tab Profil .
Pilih uji profil publikasi.
Pilih tab Pengaturan.
Klik aktifkan penyempurnaan penerbitan database baru.
Dalam kotak string koneksi untuk SchoolContext, masukkan nilai yang sama dengan yang Anda gunakan dalam file transformasi Web.Test.config di tutorial sebelumnya:
Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True
Pilih Jalankan Migrasi Pertama Kode (berjalan pada awal aplikasi). (Dalam versi Visual Studio Anda, kotak centang mungkin diberi label Terapkan Migrasi Pertama Kode.)
Dalam kotak string koneksi untuk DefaultConnection, masukkan nilai yang sama dengan yang Anda gunakan dalam file transformasi Web.Test.config di tutorial sebelumnya:
Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True
Biarkan Perbarui database dibersihkan.
Klik Terbitkan.
Visual Studio menyebarkan perubahan kode ke lingkungan pengujian dan membuka browser ke halaman beranda Contoso University.
Pilih halaman Instruktur.
Ketika aplikasi menjalankan halaman ini, aplikasi mencoba mengakses database. Migrasi Pertama Kode memeriksa apakah database sedang ada, dan menemukan bahwa migrasi terbaru belum diterapkan. Migrasi Pertama Kode menerapkan migrasi terbaru, menjalankan Seed
metode , lalu halaman berjalan normal. Anda melihat kolom Jam Kerja baru dengan data seeded.
Menyebarkan Pembaruan Database ke Lingkungan Produksi
Anda juga harus mengubah profil penerbitan untuk lingkungan produksi. Dalam hal ini Anda akan menghapus profil yang ada dan membuat profil baru dengan mengimpor file .publishsettings yang diperbarui. File yang diperbarui akan menyertakan string koneksi untuk database SQL Server di Cytanium.
Seperti yang Anda lihat saat menyebarkan ke lingkungan pengujian, Anda tidak lagi memerlukan transformasi string koneksi dalam file transformasi Web.Production.config. Buka file tersebut connectionStrings
dan hapus elemen . Transformasi yang tersisa adalah untuk Environment
nilai dalam appSettings
elemen dan location
elemen yang membatasi akses ke laporan kesalahan Elmah.
Sebelum Anda membuat profil penerbitan baru untuk produksi, unduh file .publishsettings yang diperbarui dengan cara yang sama seperti yang Anda lakukan sebelumnya dalam tutorial Menyebarkan ke Lingkungan Produksi . (Di panel kontrol Stanium, klik Situs Web, lalu klik situs web contosouniversity.com. Pilih tab Penerbitan Web, lalu klik Unduh Profil Penerbitan untuk situs web ini.) Alasan Anda melakukan ini adalah untuk mengambil database string koneksi dalam file .publishsettings. string koneksi tidak tersedia saat pertama kali Anda mengunduh file, karena Anda masih menggunakan SQL Server Compact dan belum membuat database SQL Server di Cytanium.
Sekarang Anda dapat memperbarui profil penerbitan dan menerbitkan ke lingkungan produksi.
Buka wizard Terbitkan Web , lalu beralihlah ke tab Profil .
Klik Kelola Profil, lalu hapus profil Produksi.
Tutup panduan Terbitkan Web untuk menyimpan perubahan ini.
Buka panduan Terbitkan Web lagi, lalu klik Impor.
Pada tab Koneksi , ubah URL Tujuan ke nilai yang sesuai jika Anda menggunakan URL sementara.
Klik Berikutnya.
Pada tab Pengaturan , klik aktifkan penyempurnaan penerbitan database baru.
Di daftar drop-down string koneksi untuk SchoolContext, pilih string koneksi Stanium.
Pilih Jalankan migrasi Kode Pertama (berjalan pada awal aplikasi).
Di daftar drop-down string koneksi untuk DefaultConnection, pilih string koneksi Stanium.
Pilih tab Profil , klik Kelola Profil, dan ganti nama profil dari "contosouniversity.com - Web Deploy" menjadi "Production".
Tutup profil penerbitan untuk menyimpan perubahan, lalu buka lagi.
Klik Terbitkan. (Untuk situs web produksi nyata, Anda akan menyalin app_offline.htm ke produksi dan memasukkannya ke folder proyek Anda sebelum menerbitkan, lalu menghapusnya saat penyebaran selesai.)
Visual Studio menyebarkan perubahan kode ke lingkungan pengujian dan membuka browser ke halaman beranda Contoso University.
Pilih halaman Instruktur.
Migrasi Pertama Kode memperbarui database dengan cara yang sama seperti yang dilakukannya di lingkungan Pengujian. Anda melihat kolom Jam Kerja baru dengan data seeded.
Anda sekarang telah berhasil menyebarkan pembaruan aplikasi yang menyertakan perubahan database, menggunakan database SQL Server.
Informasi Lebih Lanjut
Ini menyelesaikan serangkaian tutorial tentang penyebaran aplikasi web ASP.NET ke penyedia hosting pihak ketiga. Untuk informasi selengkapnya tentang salah satu topik yang tercakup dalam tutorial ini, lihat Peta Konten Penyebaran ASP.NET di situs web MSDN.
Pengakuan
Saya ingin mengucapkan terima kasih kepada orang-orang berikut yang memberikan kontribusi signifikan pada konten seri tutorial ini:
- Alberto Poblacion, MVP & MCT, Spanyol
- Jarod Ferguson, MVP Pengembangan Platform Data, Amerika Serikat
- Mittal Keras, Microsoft
- Kristina Olson, Microsoft
- Mike Pope, Microsoft
- Mohit Srivastava, Microsoft
- Raffaele Rialdi, Italia
- Rick Anderson, Microsoft
- Sayed Hashimi, Microsoft(twitter: @sayedihashimi)
- Scott Hanselman (twitter: @shanselman)
- Scott Hunter, Microsoft (twitter: @coolcsh)
- Srđan Božović, Serbia
- Vishal Joshi, Microsoft (twitter: @vishalrjoshi)