Entity Framework 4.0 Database First ile Çalışmaya Başlama ve ASP.NET 4 Web Forms

tarafından Tom Dykstra

Contoso University örnek web uygulaması, Entity Framework 4.0 ve Visual Studio 2010 kullanarak ASP.NET Web Forms uygulamaları oluşturmayı gösterir. Örnek uygulama, kurgusal bir Contoso Üniversitesi'nin web sitesidir. Öğrenci kabulü, kurs oluşturma ve eğitmen ödevleri gibi işlevleri içerir.

Öğreticide C# dilinde örnekler gösterilir. İndirilebilir örnek hem C# hem de Visual Basic'te kod içerir.

Önce Veritabanı

Entity Framework'teki verilerle çalışmanın üç yolu vardır: Önce Veritabanı, Önce Model ve Kod önce. Bu öğretici, Önce Veritabanı'nın öğreticisi içindir. Bu iş akışları arasındaki farklar hakkında bilgi edinmek ve senaryonuz için en iyi iş akışını seçme yönergeleri için bkz . Entity Framework Geliştirme İş Akışları.

Web Forms

Bu öğretici serisi ASP.NET Web Forms modelini kullanır ve Visual Studio'da ASP.NET Web Forms nasıl çalışabileceğinizi bildiğinizi varsayar. Kullanmıyorsanız bkz. ASP.NET 4.5 Web Forms Kullanmaya Başlama. ASP.NET MVC çerçevesiyle çalışmayı tercih ediyorsanız bkz. ASP.NET MVC kullanarak Entity Framework ile Çalışmaya Başlama.

Yazılım sürümleri

Öğreticide gösterilmiştir Ayrıca ile de çalışır
Windows 7 Windows 8
Visual Studio 2010 Web için Visual Studio 2010 Express. Öğretici, Visual Studio'nun sonraki sürümleriyle test edilmedi. Menü seçimlerinde, iletişim kutularında ve şablonlarda birçok farklılık vardır.
.NET 4 .NET 4.5, .NET 4 ile geriye dönük olarak uyumludur, ancak öğretici .NET 4.5 ile test edilmemiştir.
Entity Framework 4 Öğretici, Entity Framework'ün sonraki sürümleriyle test edilmedi. Entity Framework 5'den başlayarak EF, EF 4.1 ile sunulanı varsayılan olarak DbContext API kullanır. EntityDataSource denetimi API'yi ObjectContext kullanacak şekilde tasarlanmıştır. EntityDataSource denetimini API ile DbContext kullanma hakkında bilgi için bu blog gönderisine bakın.

Sorular

Öğreticiyle doğrudan ilgili olmayan sorularınız varsa bunları ASP.NET Entity Framework forumu, Entity Frameworkve LINQ to Entities forumu veya StackOverflow.com gönderebilirsiniz.

Genel Bakış

Bu öğreticilerde oluşturacağın uygulama basit bir üniversite web sitesidir.

Giriş, Hakkında, Öğrenciler, Kurslar, Eğitmenler ve Bölümler sayfalarının bağlantılarını gösteren Contoso Üniversitesi giriş sayfasının ekran görüntüsü.

Kullanıcılar öğrenci, kurs ve eğitmen bilgilerini görüntüleyebilir ve güncelleştirebilir. Oluşturacağınız ekranlardan birkaçı aşağıda gösterilmiştir.

Resim30

Görüntü37

Resim31

Görüntü32

Web Uygulaması Oluşturma

Öğreticiyi başlatmak için Visual Studio'yu açın ve ASP.NET Web Uygulaması şablonunu kullanarak yeni bir ASP.NET Web Uygulaması Projesi oluşturun:

Resim01

Bu şablon, zaten bir stil sayfası ve ana sayfalar içeren bir web uygulaması projesi oluşturur:

Görüntü02

Site.Master dosyasını açın ve "ASP.NET Uygulamam"ı "Contoso Üniversitesi" olarak değiştirin.

<h1>
    Contoso University
</h1>

adlı NavigationMenuMenü denetimini bulun ve aşağıdaki işaretlemeyle değiştirin. Bu işaretleme, oluşturacağın sayfalar için menü öğelerini ekler.

<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false"
                    IncludeStyleBlock="false" Orientation="Horizontal">
                    <Items>
                        <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home" />
                        <asp:MenuItem NavigateUrl="~/About.aspx" Text="About" />
                        <asp:MenuItem NavigateUrl="~/Students.aspx" Text="Students">
                            <asp:MenuItem NavigateUrl="~/StudentsAdd.aspx" Text="Add Students" />
                        </asp:MenuItem>
                        <asp:MenuItem NavigateUrl="~/Courses.aspx" Text="Courses">
                            <asp:MenuItem NavigateUrl="~/CoursesAdd.aspx" Text="Add Courses" />
                        </asp:MenuItem>
                        <asp:MenuItem NavigateUrl="~/Instructors.aspx" Text="Instructors">
                            <asp:MenuItem NavigateUrl="~/InstructorsCourses.aspx" Text="Course Assignments" />
                            <asp:MenuItem NavigateUrl="~/OfficeAssignments.aspx" Text="Office Assignments" />
                        </asp:MenuItem>
                        <asp:MenuItem NavigateUrl="~/Departments.aspx" Text="Departments">
                            <asp:MenuItem NavigateUrl="~/DepartmentsAdd.aspx" Text="Add Departments" />
                        </asp:MenuItem>
                    </Items>
                </asp:Menu>

Default.aspx sayfasını açın ve adlı denetimi şu şekilde BodyContent değiştirinContent:

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <h2>
        Welcome to Contoso University!
   </h2>
</asp:Content>

Şimdi oluşturabileceğiniz çeşitli sayfaların bağlantılarını içeren basit bir giriş sayfanız var:

Giriş, Hakkında, Öğrenciler, Kurslar, Eğitmenler ve Bölümler sayfalarının bağlantılarını gösteren Contoso Üniversitesi giriş sayfasının ekran görüntüsü.

Veritabanı Oluşturma

Bu öğreticiler için Entity Framework veri modeli tasarımcısını kullanarak mevcut bir veritabanını (genellikle veritabanı öncelikli yaklaşım olarak adlandırılır) temel alan veri modelini otomatik olarak oluşturacaksınız. Bu öğretici serisinde ele alınmayan bir alternatif, veri modelini el ile oluşturmak ve ardından tasarımcının veritabanını oluşturan betikler oluşturmasını sağlamaktır ( model öncelikli yaklaşım).

Bu öğreticide kullanılan ilk veritabanı yöntemi için bir sonraki adım siteye veritabanı eklemektir. En kolay yol, önce bu öğreticiyle birlikte gelen projeyi indirmektir. Ardından App_Data klasörüne sağ tıklayın, Var Olan Öğe Ekle'yi seçin ve indirilen projeden School.mdf veritabanı dosyasını seçin.

Alternatif olarak , Okul Örnek Veritabanını Oluşturma başlığı altındaki yönergeleri izleyebilirsiniz. Veritabanını indirin veya oluşturun, aşağıdaki klasörden School.mdf dosyasını uygulamanızın App_Data klasörüne kopyalayın:

%PROGRAMFILES%\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA

(.mdf dosyasının bu konumu, SQL Server 2008 Express kullandığınızı varsayar.)

Veritabanını bir betikten oluşturursanız, veritabanı diyagramı oluşturmak için aşağıdaki adımları uygulayın:

  1. Sunucu Gezgini'ndeVeri Bağlantıları'nı genişletin, School.mdf'yi genişletin, Veritabanı Diyagramları'na sağ tıklayın ve Yeni Diyagram Ekle'yi seçin.

    Resim35

  2. Tüm tabloları seçin ve Ekle'ye tıklayın.

    Görüntü36

    SQL Server tabloları, tablolardaki sütunları ve tablolar arasındaki ilişkileri gösteren bir veritabanı diyagramı oluşturur. Tabloları istediğiniz gibi düzenlemek için taşıyabilirsiniz.

  3. Diyagramı "SchoolDiagram" olarak kaydedin ve kapatın.

Bu öğreticiye uygun School.mdf dosyasını indirirseniz, Sunucu Gezgini'ndeVeritabanı Diyagramları'nın altında SchoolDiagram'a çift tıklayarak veritabanı diyagramını görüntüleyebilirsiniz.

Resim38

Diyagram şuna benzer (tablolar burada gösterilenden farklı konumlarda olabilir):

Görüntü04

Entity Framework Veri Modeli Oluşturma

Artık bu veritabanından bir Entity Framework veri modeli oluşturabilirsiniz. Veri modelini uygulamanın kök klasöründe oluşturabilirsiniz, ancak bu öğretici için DAL adlı bir klasöre yerleştireceksiniz (Veri Erişim Katmanı için).

Çözüm Gezginidal adlı bir proje klasörü ekleyin (çözümün altında değil projenin altında olduğundan emin olun).

DAL klasörüne sağ tıklayın ve Ekle ve Yeni Öğe'yi seçin. Yüklü Şablonlar'ın altında Veri'yi seçin, ADO.NET Varlık Veri Modeli şablonunu seçin, SchoolModel.edmx olarak adlandırın ve ekle'ye tıklayın.

Görüntü05

Bu işlem Varlık Veri Modeli Sihirbazı'nı başlatır. İlk sihirbaz adımında, Veritabanından oluştur seçeneği varsayılan olarak seçilidir. İleri’ye tıklayın.

Görüntü06

Veri Bağlantınızı Seçin adımında varsayılan değerleri bırakın ve İleri'ye tıklayın. Okul veritabanı varsayılan olarak seçilidir ve bağlantı ayarı Web.config dosyasına SchoolEntities olarak kaydedilir.

Görüntü07

Veritabanı Nesnelerinizi Seçin sihirbazı adımında, dışındaki sysdiagrams tüm tabloları seçin (daha önce oluşturduğunuz diyagram için oluşturulmuştur) ve ardından Son'a tıklayın.

Görüntü08

Modeli oluşturmayı tamamladıktan sonra Visual Studio, veritabanı tablolarınıza karşılık gelen Entity Framework nesnelerinin (varlıklar) grafik bir gösterimini gösterir. (Veritabanı diyagramında olduğu gibi, tek tek öğelerin konumu bu çizimde gördüklerinizden farklı olabilir. İsterseniz öğeleri çizimle eşleşecek şekilde sürükleyebilirsiniz.)

Görüntü09

Entity Framework Veri Modelini Keşfetme

Varlık diyagramının veritabanı diyagramına çok benzediğini ve birkaç farklılık olduğunu görebilirsiniz. Bir fark, ilişkilendirme türünü belirten her ilişkilendirmenin sonuna simgelerin eklenmesidir (tablo ilişkileri, veri modelinde varlık ilişkilendirmeleri olarak adlandırılır):

  • Bire sıfıra veya bir ilişkisi "1" ve "0..1" ile temsil edilir.

    Resim39

    Bu durumda, bir varlık bir Person varlıkla OfficeAssignment ilişkilendirilebilir veya ilişkilendirilmeyebilir. Varlık bir OfficeAssignmentPerson varlıkla ilişkilendirilmelidir. Başka bir deyişle, bir eğitmen bir ofise atanabilir veya atanamayabilir ve herhangi bir ofis yalnızca bir eğitmene atanabilir.

  • Bire çok ilişkisi "1" ve "*" ile temsil edilir.

    Resim40

    Bu durumda, bir Person varlık ilişkili StudentGrade varlıklara sahip olabilir veya olmayabilir. Varlık StudentGrade bir Person varlıkla ilişkilendirilmelidir. StudentGrade varlıklar aslında bu veritabanında kayıtlı kursları temsil eder; Öğrenci bir kursa kayıtlıysa ve henüz not yoksa, Grade özellik null olur. Başka bir deyişle, bir öğrenci henüz hiçbir kursa kayıtlı olmayabilir, bir kursa kaydolabilir veya birden çok kursa kaydolabilir. Kayıtlı kurstaki her not yalnızca bir öğrenci için geçerlidir.

  • Çoka çok ilişkilendirmesi "*" ve "*" ile temsil edilir.

    Resim41

    Bu durumda, bir Person varlık ilişkili Course varlıklara sahip olabilir veya olmayabilir ve bunun tersi de geçerlidir: bir Course varlık ilişkili Person varlıklara sahip olabilir veya olmayabilir. Başka bir deyişle, bir eğitmen birden çok ders verebilir ve bir kurs birden çok eğitmen tarafından öğretilebilir. (Bu veritabanında bu ilişki yalnızca eğitmenler için geçerlidir; öğrencileri kurslara bağlamaz. Öğrenciler StudentGrades tablosu tarafından kurslara bağlanır.)

Veritabanı diyagramı ile veri modeli arasındaki bir diğer fark, her varlık için ek Gezinti Özellikleri bölümüdür. Bir varlığın gezinti özelliği ilgili varlıklara başvurur. Örneğin, bir varlıktaki Courses özelliği, bu varlıkla ilgili Person tüm Course varlıkların koleksiyonunu içerir.Person

Resim12

Veritabanı ile veri modeli arasındaki bir diğer fark da ve tablolarını çoka çok ilişkisinde bağlamak için veritabanında kullanılan ilişkilendirme tablosunun PersonCourse olmamasıdırCourseInstructor. Gezinti özellikleri varlıktan ilgili varlıkları ve varlıktan PersonCourse ilgili CoursePerson varlıkları almanıza olanak tanır, bu nedenle veri modelindeki ilişkilendirme tablosunu temsil etmeniz gerekmez.

Resim11

Bu öğreticide, tablonun sütununun Person aslında hem kişinin adını hem de ikinci adını içerdiğini varsayalımFirstName. Alanın adını bunu yansıtacak şekilde değiştirmek istiyorsunuz, ancak veritabanı yöneticisi (DBA) veritabanını değiştirmek istemeyebilir. Veri modelindeki özelliğin FirstName adını değiştirebilir ve veritabanı eşdeğerini değiştirmeden bırakabilirsiniz.

Tasarımcıda varlıkta FirstName'e sağ tıklayın ve yeniden adlandır'ıPerson seçin.

Resim13

Yeni adı "FirstMidName" yazın. Bu, veritabanını değiştirmeden koddaki sütuna başvurma şeklinizi değiştirir.

Resim29

Model tarayıcısı veritabanı yapısını, veri modeli yapısını ve bunlar arasındaki eşlemeyi görüntülemek için başka bir yol sağlar. Bunu görmek için varlık tasarımcısında boş bir alana sağ tıklayın ve ardından Model Tarayıcısı'na tıklayın.

Resim18

Model Tarayıcısı bölmesinde bir ağaç görünümü görüntülenir. (Model Tarayıcısı bölmesi Çözüm Gezgini bölmesine yerleştirilmiş olabilir.) SchoolModel düğümü veri modeli yapısını, SchoolModel.Store düğümü ise veritabanı yapısını temsil eder.

Resim26

Tabloları görmek için SchoolModel.Store genişletin, tabloları görmek için Tablolar/Görünümler'i genişletin ve ardından tablo içindeki sütunları görmek için Kurs'u genişletin.

Resim19

SchoolModel'i genişletin, Varlık Türleri'ni genişletin ve ardından varlıkları ve varlıkların içindeki özellikleri görmek için Kurs düğümünü genişletin.

Resim20

Tasarımcıda veya Model Tarayıcısı bölmesinde Entity Framework'ün iki modelin nesnelerini nasıl ilişkilendirdiğini görebilirsiniz. Varlığa Person sağ tıklayın ve Tablo Eşlemesi'ni seçin.

Resim21

Bu işlem , Eşleme Ayrıntıları penceresini açar. Bu pencerenin veritabanı sütununun FirstName veri modelinde olarak yeniden adlandırdığınız ile eşlendiğini FirstMidNamegörmenize olanak tanır.

Resim22

Entity Framework, veritabanı, veri modeli ve bunlar arasındaki eşlemeler hakkındaki bilgileri depolamak için XML kullanır. SchoolModel.edmx dosyası aslında bu bilgileri içeren bir XML dosyasıdır. Tasarımcı bilgileri grafik biçiminde işler, ancak Çözüm Gezgini'da .edmx dosyasına sağ tıklayıp Birlikte Aç'a tıklayıp XML (Metin) Düzenleyicisi'ni seçerek de dosyayı XML olarak görüntüleyebilirsiniz. (Veri modeli tasarımcısı ve XML düzenleyicisi aynı dosyayı açmanın ve bu dosyayla çalışmanın yalnızca iki farklı yolu olduğundan, tasarımcının dosyayı aynı anda xml düzenleyicisinde açmasını ve açmasını sağlayamazsınız.)

Şimdi bir web sitesi, veritabanı ve veri modeli oluşturdunuz. Sonraki kılavuzda veri modelini ve ASP.NET EntityDataSource denetimini kullanarak verilerle çalışmaya başlayacaksınız.