Aracılığıyla paylaş


Visual Studio veya Visual Web Developer kullanarak SQL Server Compact ile ASP.NET Web Uygulaması Dağıtma: SQL Server Veritabanı Güncelleştirmesi Dağıtma - 12/11

tarafından Tom Dykstra

Başlangıç Projelerini İndir

Bu öğretici serisi, Visual Studio 2012 RC veya Web için Visual Studio Express 2012 RC kullanarak SQL Server Compact veritabanı içeren bir ASP.NET web uygulaması projesi dağıtmayı (yayımlamayı) gösterir. Web Yayımlama Güncelleştirmesi'ni yüklerseniz Visual Studio 2010'u da kullanabilirsiniz. Seriye giriş için serideki ilk öğreticiye bakın.

Visual Studio 2012'nin RC sürümünden sonra sunulan dağıtım özelliklerini gösteren, SQL Server Compact dışındaki SQL Server sürümleri dağıtmayı ve Windows Azure Web Sitelerine dağıtmayı gösteren bir öğretici için bkz. Visual Studio kullanarak web dağıtımı ASP.NET.

Genel Bakış

Bu öğreticide, tam bir SQL Server veritabanına veritabanı güncelleştirmesinin nasıl dağıtılacağı gösterilmektedir. veritabanını güncelleştirmenin tüm işlerini Code First Migrations olduğundan, bu işlem Veritabanı Güncelleştirmesi Dağıtma öğreticisindeki SQL Server Compact için yaptığınız işlemle neredeyse aynıdır.

Anımsatıcı: Öğreticide ilerlerken bir hata iletisi alırsanız veya bir şey çalışmıyorsa sorun giderme sayfasını kontrol edin.

Tabloya Yeni Sütun Ekleme

Öğreticinin bu bölümünde bir veritabanı değişikliği ve buna karşılık gelen kod değişiklikleri yapacak, ardından bunları test ve üretim ortamlarına dağıtma hazırlığında Visual Studio'da test edin. Değişiklik, varlığa bir OfficeHours sütun Instructor eklemeyi ve yeni bilgilerin Eğitmenler web sayfasında görüntülenmesini içerir.

ContosoUniversity.DAL projesinde Instructor.cs açın ve ve Courses özellikleri arasına HireDate aşağıdaki özelliği ekleyin:

[MaxLength(50)]
public string OfficeHours { get; set; }

Başlatıcı sınıfını yeni sütunu test verileriyle gösterecek şekilde güncelleştirin. Migrations\Configuration.cs dosyasını açın ve yeni sütunu içeren aşağıdaki kod bloğuyla başlayan var instructors = new List<Instructor> kod bloğunu değiştirin:

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" }
};

ContosoUniversity projesinde Instructors.aspx açın ve ilk GridView denetimdeki kapanış </Columns> etiketinden hemen önce ofis saatleri için yeni bir şablon alanı ekleyin:

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

Çözümü derleyin.

Paket Yöneticisi Konsolu penceresini açın ve Varsayılan proje olarak ContosoUniversity.DAL öğesini seçin.

Aşağıdaki komutları girin:

add-migration AddOfficeHoursColumn

update-database

Uygulamayı çalıştırın ve Eğitmenler sayfasını seçin. Entity Framework veritabanını yeniden oluşturduğundan ve test verileriyle tohumladığı için sayfanın yüklenmesi normalden biraz daha uzun sürer.

Instructors_page_with_office_hours

Veritabanı Güncelleştirmesini Test Ortamına Dağıtma

Code First Migrations kullandığınızda, veritabanı değişikliğini SQL Server dağıtma yöntemi SQL Server Compact ile aynıdır. Ancak, test yayımlama profilini değiştirmeniz gerekir çünkü hala SQL Server Compact'den SQL Server geçiş için ayarlanmıştır.

İlk adım, önceki öğreticide oluşturduğunuz bağlantı dizesi dönüşümlerini kaldırmaktır. SQL Server'a geçiş için SQL'i Paketle/Yayımla sekmesini yapılandırmadan önce yaptığınız gibi yayımlama profilinde bağlantı dizesi dönüştürmeleri belirteceğiniz için bunlar artık gerekli değildir.

Web.Test.config dosyasını açın ve öğesini kaldırınconnectionStrings. Web.Test.config dosyasında kalan tek dönüştürme öğesindeki appSettings değer içindirEnvironment.

Artık yayımlama profilini güncelleştirebilir ve test ortamında yayımlayabilirsiniz.

Web'i Yayımla sihirbazını açın ve profil sekmesine geçin.

Yayımlama profilini test et'i seçin.

Ayarlar sekmesini seçin.

Yeni veritabanı yayımlama geliştirmelerini etkinleştir'e tıklayın.

SchoolContext'in bağlantı dizesi kutusuna, önceki öğreticide Web.Test.config dönüştürme dosyasında kullandığınız değeri girin:

Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True

Code First Migrations Yürüt(uygulama başlangıcında çalışır) öğesini seçin. (Visual Studio sürümünüzde onay kutusu Code First Migrations Uygula olarak etiketlenebilir.)

DefaultConnection bağlantı dizesi kutusuna, önceki öğreticide Web.Test.config dönüştürme dosyasında kullandığınız değeri girin:

Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True

Veritabanını güncelleştir'i temiz bırakın.

Yayımla’ya tıklayın.

Visual Studio, kod değişikliklerini test ortamına dağıtır ve tarayıcıyı Contoso Üniversitesi giriş sayfasına açar.

Eğitmenler sayfasını seçin.

Uygulama bu sayfayı çalıştırdığında veritabanına erişmeye çalışır. Code First Migrations veritabanının güncel olup olmadığını denetler ve en son geçişin henüz uygulanmadığını bulur. Code First Migrations en son geçişi uygular, yöntemini çalıştırır Seed ve ardından sayfa normal şekilde çalışır. Yeni Office Saatleri sütununu ve dağıtılmış verileri görürsünüz.

Instructors_page_with_OfficeHours_Test

Veritabanı Güncelleştirmesini Üretim Ortamına Dağıtma

Üretim ortamı için yayımlama profilini de değiştirmeniz gerekir. Bu durumda, güncelleştirilmiş bir .publishsettings dosyasını içeri aktararak mevcut profili kaldırır ve yeni bir profil oluşturursunuz. Güncelleştirilmiş dosya Cytanium'daki SQL Server veritabanının bağlantı dizesi içerir.

Test ortamına dağıttığınızda gördüğünüz gibi artıkWeb.Production.configdönüştürme dosyasında dönüşümler bağlantı dizesi gerek yoktur. Bu dosyayı açın ve öğesini kaldırın connectionStrings . Kalan dönüştürmeler Environment öğesindeki appSettings değere ve location Elmah hata raporlarına erişimi kısıtlayan öğeye yöneliktir.

Üretim için yeni bir yayımlama profili oluşturmadan önce, daha önce Üretim Ortamına Dağıtma öğreticisinde yaptığınız gibi güncelleştirilmiş bir .publishsettings dosyasını indirin. (Cytanium denetim masasında Web Siteleri'ne ve ardından contosouniversity.com web sitesine tıklayın. Web Yayımlama sekmesini seçin ve bu web sitesi için Yayımlama Profilini İndir'e tıklayın.) Bunu yapmanızın nedeni, .publishsettings dosyasındaki veritabanı bağlantı dizesi almaktır. dosyayı ilk kez indirdiğinizde bağlantı dizesi kullanılamıyordu çünkü hala SQL Server Compact kullanıyordunuz ve Cytanium'da SQL Server veritabanını henüz oluşturmamıştınız.

Artık yayımlama profilini güncelleştirebilir ve üretim ortamında yayımlayabilirsiniz.

Web'i Yayımla sihirbazını açın ve profil sekmesine geçin.

Profilleri Yönet'e tıklayın ve üretim profilini silin.

Bu değişikliği kaydetmek için Web'i Yayımla sihirbazını kapatın.

Web'i Yayımla sihirbazını yeniden açın ve İçeri Aktar'a tıklayın.

Bağlantı sekmesinde, geçici bir URL kullanıyorsanız Hedef URL'yi uygun değerle değiştirin.

İleri’ye tıklayın.

Ayarlar sekmesinde, yeni veritabanı yayımlama geliştirmelerini etkinleştir'e tıklayın.

SchoolContext için bağlantı dizesi açılan listesinde Cytanium bağlantı dizesi seçin.

Selecting_Cytanium_connection_string

Kod Yürüt İlk geçişleri (uygulama başlangıcında çalıştırılır) seçin.

DefaultConnection için bağlantı dizesi açılan listesinde Cytanium bağlantı dizesi seçin.

Profil sekmesini seçin, Profilleri Yönet'e tıklayın ve profili "contosouniversity.com - Web Dağıtımı" yerine "Üretim" olarak yeniden adlandırın.

Değişikliği kaydetmek için yayımlama profilini kapatın ve yeniden açın.

Yayımla’ya tıklayın. (Gerçek bir üretim web sitesi için ,app_offline.htm üretim ortamına kopyalayıp yayımlamadan önce proje klasörünüzde depolayabilir ve dağıtım tamamlandığında kaldırabilirsiniz.)

Visual Studio, kod değişikliklerini test ortamına dağıtır ve tarayıcıyı Contoso Üniversitesi giriş sayfasına açar.

Eğitmenler sayfasını seçin.

Code First Migrations veritabanını Test ortamındaki gibi güncelleştirir. Yeni Office Saatleri sütununu ve dağıtılmış verileri görürsünüz.

Instructors_page_with_OfficeHours_Prod

Artık bir SQL Server veritabanı kullanarak veritabanı değişikliği içeren bir uygulama güncelleştirmesini başarıyla dağıttınız.

Daha Fazla Bilgi

Bu, bir ASP.NET web uygulamasını üçüncü taraf barındırma sağlayıcısına dağıtmaya yönelik bu öğretici serisini tamamlar. Bu öğreticilerde ele alınan konulardan herhangi biri hakkında daha fazla bilgi için MSDN web sitesindeki ASP.NET Dağıtım İçeriği Haritası'na bakın.

Teşekkürler

Bu öğretici serisinin içeriğine önemli katkılarda bulunan aşağıdaki kişilere teşekkür etmek istiyorum: