Bagikan melalui


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

Unduh Proyek Starter

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.

Instructors_page_with_office_hours

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.

Instructors_page_with_OfficeHours_Test

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.

Selecting_Cytanium_connection_string

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.

Instructors_page_with_OfficeHours_Prod

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: