Visual Studio kullanarak ASP.NET Web dağıtımı: veritabanı güncelleştirmesi dağıtma

Tom Dykstra tarafından

Başlatıcı projesi indir

Bu öğretici serisi, Visual Studio 2012 veya Visual Studio 2010 kullanarak bir ASP.NET Web uygulamasını Azure App Service Web Apps veya üçüncü taraf barındırma sağlayıcısına dağıtmayı (yayımlamayı) gösterir. Seriler hakkında daha fazla bilgi için, serideki ilk öğreticiyebakın.

Genel bakış

Bu öğreticide, bir veritabanı değişikliği ve ilgili kod değişiklikleri yapar, değişiklikleri Visual Studio 'da test edin ve ardından bu güncelleştirmeyi test, hazırlama ve üretim ortamlarına dağıtın.

Öğreticide ilk olarak Code First Migrations tarafından yönetilen bir veritabanını güncelleştirme ve daha sonra dbDacFx sağlayıcısı kullanılarak bir veritabanının nasıl güncelleşmekte olduğu gösterilmektedir.

Anımsatıcı: bir hata iletisi alırsanız veya öğreticide ilerlediyseniz bir şey çalışmadıysanız sorun giderme sayfasınıkontrol ettiğinizden emin olun.

Code First Migrations kullanarak bir veritabanı güncelleştirmesi dağıtma

Bu bölümde, Student ve Instructor varlıkları için Person taban sınıfına bir Doğum tarihi sütunu eklersiniz. Ardından, eğitmen verilerini görüntüleyen sayfayı yeni sütunu görüntüleyecek şekilde güncelleştirin. Son olarak, değişiklikleri test, hazırlama ve üretime dağıtırsınız.

Uygulama veritabanındaki bir tabloya sütun ekleme

  1. Contosouniversity. dal projesinde, Person.cs açın ve Person sınıfının sonuna aşağıdaki özelliği ekleyin (bundan sonra iki kapatma küme ayracı olmalıdır):

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

    Sonra, Seed yöntemini yeni sütun için bir değer sağlayacak şekilde güncelleştirin. Migrations\configuration.cs ' i açın ve var instructors = new List<Instructor> başlayan kod bloğunu, Doğum tarihi bilgilerini içeren aşağıdaki kod bloğu ile 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"), 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. Çözümü oluşturun ve ardından Paket Yöneticisi konsol penceresini açın. ContosoUniversity. DAL ' nin hala varsayılan projeolarak seçildiğinden emin olun.

  3. Paket Yöneticisi konsolu penceresinde, varsayılan projeolarak contosouniversity. dal ' ı seçin ve aşağıdaki komutu girin:

    add-migration AddBirthDate
    

    Bu komut tamamlandığında, Visual Studio yeni DbMigration sınıfını tanımlayan sınıf dosyasını açar ve Up yönteminde yeni sütunu oluşturan kodu görebilirsiniz. Up yöntemi, değişikliği uygularken sütunu oluşturur ve Down yöntemi, değişikliği geri aldığınızda sütunu siler.

    AddBirthDate_migration_code

  4. Çözümü oluşturun ve ardından Paket Yöneticisi konsol penceresine aşağıdaki komutu girin (contosouniversity. dal projesinin hala seçili olduğundan emin olun):

    update-database
    

    Entity Framework Up yöntemini çalıştırır ve sonra Seed metodunu çalıştırır.

Eğitmenler sayfasında yeni sütunu görüntüle

  1. ContosoUniversity projesinde, eğitmenler. aspx ' i açın ve Doğum tarihini göstermek için yeni bir şablon alanı ekleyin. İşe alma tarihi ve Office ataması için olanlar arasına ekleyin:

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

    (Kod girintileme eşitlenmemiş ise, CTRL + K tuşlarına basabilir ve sonra dosyayı otomatik olarak yeniden biçimlendirmek için CTRL-D ' ye basabilirsiniz.)

  2. Uygulamayı çalıştırın ve eğitmenler bağlantısına tıklayın.

    Sayfa yüklendiğinde, yeni Doğum tarihi alanına sahip olduğunu görürsünüz.

    Doğum tarihi olan eğitmenler sayfası

  3. Tarayıcıyı kapatın.

Veritabanı güncelleştirmesini dağıtma

  1. Çözüm Gezgini contosouniversity projesini seçin.

  2. Web 'de Yayımla araç çubuğunda, Test yayımlama profili ' ne tıklayın ve ardından Web 'i Yayımla' ya tıklayın. (Araç çubuğu devre dışıysa, Çözüm Gezgini' de contosouniversity projesini seçin.)

    Visual Studio, güncelleştirilmiş uygulamayı dağıtır ve tarayıcı giriş sayfasında açılır.

  3. Güncelleştirmenin başarıyla dağıtıldığını doğrulamak için eğitmenler sayfasını çalıştırın.

    Uygulama bu sayfanın veritabanına erişmeye çalıştığında, Code First veritabanı şemasını güncelleştirir ve Seed metodunu çalıştırır. Sayfa görüntülendiğinde, içindeki tarihlerle birlikte beklenen Doğum tarihi sütununu görürsünüz.

  4. Web 'de Yayımla araç çubuğunda, hazırlama yayımlama profili ' ne tıklayın ve ardından Web 'i Yayımla' ya tıklayın.

  5. Güncelleştirmenin başarıyla dağıtıldığını doğrulamak için hazırlama aşamasında eğitmenler sayfasını çalıştırın.

  6. Web 'de Yayımla araç çubuğunda, Üretim yayımlama profili ' ne tıklayın ve ardından Web 'i Yayımla' ya tıklayın.

  7. Güncelleştirmenin başarıyla dağıtıldığını doğrulamak için üretimde eğitmenler sayfasını çalıştırın.

    Bir veritabanı değişikliğini içeren gerçek bir üretim uygulaması güncelleştirmesi için, önceki öğreticide gördüğünüz gibi app_offline. htm' yi kullanarak dağıtım sırasında uygulamayı çevrimdışı duruma de çevrimdışına almanız gerekir.

DbDacFx sağlayıcısını kullanarak bir veritabanı güncelleştirmesi dağıtma

Bu bölümde, üyelik veritabanındaki Kullanıcı tablosuna bir Açıklama sütunu ekler ve her bir kullanıcı için açıklamaları görüntülemenize ve düzenlemenize olanak tanıyan bir sayfa oluşturacaksınız. Ardından, değişiklikleri test, hazırlama ve üretime dağıtabilirsiniz.

Üyelik veritabanındaki bir tabloya sütun ekleme

  1. Visual Studio 'da SQL Server Nesne Gezginiaçın.

  2. Expand (LocalDB) \v11.0, veritabanları' nı genişletin, ASPNET-ContosoUniversity ( ASPNET-contosouniversity-prod) öğesini genişletin ve ardından Tablolar' ı genişletin.

    SQL Server düğümü altında (LocalDB) \v11.0 görmüyorsanız, SQL Server düğümüne sağ tıklayıp SQL Server Ekle' ye tıklayın. Sunucuya Bağlan Iletişim kutusunda sunucu adıolarak (LocalDB) \v11.0 girin ve ardından Bağlan' a tıklayın.

    ASPNET-Contosoüniversitesi' ni görmüyorsanız, projeyi çalıştırın ve yönetici kimlik bilgilerini (parola devpwd) kullanarak oturum açın ve SQL Server Nesne Gezgini penceresini yenileyin.

  3. Kullanıcılar tablosuna sağ tıklayın ve sonra Tasarımcı görüntüle' ye tıklayın.

    SSOX Görünüm Tasarımcısı

  4. Tasarımcıda bir Açıklama sütunu ekleyin ve bunu nvarchar (128) ve null yapılabilir yapın ve ardından Güncelleştir' e tıklayın.

    Açıklama sütunu ekleme

  5. Veritabanı güncelleştirmelerini Önizle kutusunda veritabanını güncelleştir' e tıklayın.

    Veritabanı güncelleştirmelerini Önizle

Yeni sütunu göstermek ve düzenlemek için bir sayfa oluşturun

  1. Çözüm Gezgini, contosouniversity projesindeki Hesap klasörüne sağ tıklayın, Ekle' ye ve ardından Yeni öğe' ye tıklayın.

  2. Ana sayfayı kullanarak yeni bir Web formu oluşturun ve bunu UserInfo. aspxolarak adlandırın. Varsayılan site. Master dosyasını ana sayfa olarak kabul edin.

  3. Aşağıdaki işaretlemeyi MainContent Content öğesine kopyalayın (3 Content öğelerinden son):

    <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. UserInfo. aspx sayfasına sağ tıklayın ve Tarayıcıda görüntüle' ye tıklayın.

  5. Yönetici Kullanıcı kimlik bilgilerinizle (parola devpwd) oturum açın ve sayfanın düzgün çalıştığını doğrulamak için bir kullanıcıya bazı yorumlar ekleyin.

    UserInfo sayfası

  6. Tarayıcıyı kapatın.

Veritabanı güncelleştirmesini dağıtma

DbDacFx sağlayıcısını kullanarak dağıtmak için, yayımlama profilinde veritabanını güncelleştir seçeneğini belirlemeniz yeterlidir. Bununla birlikte, bu seçeneği kullandığınızda ilk dağıtım için bazı ek SQL betikleri da yapılandırmış olursunuz: Bunlar hala profilde bulunur ve bunların yeniden çalıştırılmasını engellemeniz gerekir.

  1. ContosoUniversity projesine sağ tıklayıp Yayımla' ya tıklayarak Web 'i Yayımla Sihirbazı ' nı açın.

  2. Test profilini seçin.

  3. Ayarlar sekmesine tıklayın.

  4. DefaultConnectionaltında veritabanını güncelleştir' i seçin.

  5. İlk dağıtım için çalıştırmak üzere yapılandırdığınız ek betikleri devre dışı bırakın:

    1. Veritabanı güncelleştirmelerini Yapılandıröğesine tıklayın.
    2. Veritabanı güncelleştirmelerini Yapılandır iletişim kutusunda, ver. SQL ve ASPNET-Data-dev. SQL' ın yanındaki onay kutularını temizleyin.
    3. Kapat'ı tıklatın.
  6. Önizleme sekmesine tıklayın.

  7. DefaultConnection'un veritabanları ve sağ tarafındaki veritabanı önizleme bağlantısına tıklayın.

    Veritabanı önizlemesi

    Önizleme penceresi, veritabanı şemasının kaynak veritabanının şemasıyla eşleşmesini sağlamak için hedef veritabanında çalıştırılacak betiği gösterir. Komut dosyası, yeni sütunu ekleyen bir ALTER TABLE komutu içerir.

  8. Veritabanı önizlemesi iletişim kutusunu kapatın ve ardından Yayımla' ya tıklayın.

    Visual Studio, güncelleştirilmiş uygulamayı dağıtır ve tarayıcı giriş sayfasında açılır.

  9. Güncelleştirmenin başarıyla dağıtıldığını doğrulamak için UserInfo sayfasını (giriş sayfası URL 'sine Hesap/UserInfo. aspx ekleyin) çalıştırın. Yönetici ve devpwdgirerek oturum açmanız gerekir.

    Tablolardaki veriler varsayılan olarak dağıtılır ve çalıştırmak için bir veri dağıtım betiği yapılandırmadıysanız, geliştirmede eklediğiniz yorumu bulamayacaksınız. Değişikliğin veritabanına dağıtıldığını ve sayfanın doğru şekilde çalıştığını doğrulamak için şimdi hazırlama aşamasında yeni bir yorum ekleyebilirsiniz.

  10. Hazırlama ve üretime dağıtmak için aynı yordamı izleyin.

    Ek betikleri devre dışı bırakmayı unutmayın. Test profiliyle karşılaştırılan tek fark, hazırlama ve üretim profillerindeki yalnızca bir betiği devre dışı bırakacağından yalnızca ASPNET-prod-Data. SQL' i çalıştıracak şekilde yapılandırılmanızdır.

    Hazırlama ve üretim için kimlik bilgileri yönetici ve prodpwd ' dir.

    Bir veritabanı değişikliğini içeren gerçek bir üretim uygulaması güncelleştirmesi için, önceki öğreticidegördüğünüz şekilde, uygulamayı yayımlamadan ve silmeden önce çevrimdışı. htm_ yükleme sırasında uygulamayı çevrimdışı olarak da çevrimdışına almanız gerekir.

Özet

Artık Code First Migrations ve dbDacFx sağlayıcısını kullanarak bir veritabanı değişikliği içeren bir uygulama güncelleştirmesi dağıttınız.

Doğum tarihi olan eğitmenler sayfası

UserInfo sayfası

Sonraki öğreticide, komut satırını kullanarak dağıtımların nasıl yürütüleceği gösterilmektedir.