Bagikan melalui


Memulai Entity Framework 4.0 Database First dan ASP.NET 4 Web Forms

oleh Tom Dykstra

Aplikasi web sampel Contoso University menunjukkan cara membuat aplikasi ASP.NET Web Forms menggunakan Entity Framework 4.0 dan Visual Studio 2010. Aplikasi sampel adalah situs web untuk Contoso University fiktif. Ini termasuk fungsionalitas seperti penerimaan siswa, pembuatan kursus, dan tugas instruktur.

Tutorial menunjukkan contoh dalam C#. Sampel yang dapat diunduh berisi kode di C# dan Visual Basic.

Database Pertama

Ada tiga cara untuk bekerja dengan data dalam Kerangka Kerja Entitas: Database Pertama, Model Pertama, dan Kode Pertama. Tutorial ini untuk Database First. Untuk informasi tentang perbedaan antara alur kerja ini dan panduan tentang cara memilih yang terbaik untuk skenario Anda, lihat Alur Kerja Pengembangan Kerangka Kerja Entitas.

Formulir Web

Seri tutorial ini menggunakan model ASP.NET Web Forms dan mengasumsikan Anda tahu cara bekerja dengan ASP.NET Web Forms di Visual Studio. Jika tidak, lihat Mulai menggunakan Formulir Web ASP.NET 4.5. Jika Anda lebih suka bekerja dengan kerangka kerja MVC ASP.NET, lihat Memulai Kerangka Kerja Entitas menggunakan ASP.NET MVC.

Versi perangkat lunak

Ditampilkan dalam tutorial Juga bekerja dengan
Windows 7 Windows 8
Visual Studio 2010 Visual Studio 2010 Express untuk Web. Tutorial belum diuji dengan versi Visual Studio yang lebih baru. Ada banyak perbedaan dalam pilihan menu, kotak dialog, dan templat.
.NET 4 .NET 4.5 kompatibel mundur dengan .NET 4, tetapi tutorial belum diuji dengan .NET 4.5.
Kerangka Kerja Entitas 4 Tutorial belum diuji dengan versi Entity Framework yang lebih baru. Dimulai dengan Entity Framework 5, EF menggunakan secara default DbContext API yang diperkenalkan dengan EF 4.1. Kontrol EntityDataSource dirancang untuk menggunakan ObjectContext API. Untuk informasi tentang cara menggunakan kontrol EntityDataSource dengan DbContext API, lihat posting blog ini.

Pertanyaan

Jika Anda memiliki pertanyaan yang tidak terkait langsung dengan tutorial, Anda dapat mempostingnya ke forum kerangka kerja entitas ASP.NET, Kerangka Kerja Entitas dan LINQ ke forum Entitas, atau StackOverflow.com.

Gambaran Umum

Aplikasi yang akan Anda bangun dalam tutorial ini adalah situs web universitas sederhana.

Cuplikan layar beranda Contoso University, yang menampilkan tautan ke halaman Beranda, Tentang, Siswa, Kursus, Instruktur, dan Departemen.

Pengguna dapat melihat dan memperbarui informasi siswa, kursus, dan instruktur. Beberapa layar yang akan Anda buat ditunjukkan di bawah ini.

Gambar30

Gambar37

Gambar31

Gambar32

Membuat Aplikasi Web

Untuk memulai tutorial, buka Visual Studio lalu buat ASP.NET Web Application Project baru menggunakan templat aplikasi web ASP.NET :

Gambar01

Templat ini membuat proyek aplikasi web yang sudah menyertakan lembar gaya dan halaman master:

Gambar02

Buka file Site.Master dan ubah "Aplikasi ASP.NET Saya" menjadi "Universitas Contoso".

<h1>
    Contoso University
</h1>

Temukan kontrol Menu bernama NavigationMenu dan ganti dengan markup berikut, yang menambahkan item menu untuk halaman yang akan Anda buat.

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

Buka halaman Default.aspx dan ubah kontrol bernama ContentBodyContent menjadi ini:

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

Anda sekarang memiliki halaman beranda sederhana dengan tautan ke berbagai halaman yang akan Anda buat:

Cuplikan layar beranda Contoso University, yang memperlihatkan tautan ke halaman Beranda, Tentang, Siswa, Kursus, Instruktur, dan Departemen.

Membuat Database

Untuk tutorial ini, Anda akan menggunakan perancang model data Kerangka Kerja Entitas untuk membuat model data secara otomatis berdasarkan database yang ada (sering disebut pendekatan database-first ). Alternatif yang tidak tercakup dalam seri tutorial ini adalah membuat model data secara manual dan kemudian meminta perancang menghasilkan skrip yang membuat database (pendekatan model-first ).

Untuk metode database-first yang digunakan dalam tutorial ini, langkah selanjutnya adalah menambahkan database ke situs. Cara termudah adalah dengan terlebih dahulu mengunduh proyek yang sesuai dengan tutorial ini. Kemudian klik kanan folder App_Data , pilih Tambahkan Item yang Ada, dan pilih file database School.mdf dari proyek yang diunduh.

Alternatifnya adalah mengikuti instruksi di Membuat Database Sampel Sekolah. Baik Anda mengunduh database atau membuatnya, salin file School.mdf dari folder berikut ke folder App_Data aplikasi Anda:

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

(Lokasi file .mdf ini mengasumsikan Anda menggunakan SQL Server 2008 Express.)

Jika Anda membuat database dari skrip, lakukan langkah-langkah berikut untuk membuat diagram database:

  1. Di Server Explorer, perluas Koneksi Data, perluas School.mdf, klik kanan Diagram Database, dan pilih Tambahkan Diagram Baru.

    Gambar35

  2. Pilih semua tabel lalu klik Tambahkan.

    Gambar36

    SQL Server membuat diagram database yang memperlihatkan tabel, kolom dalam tabel, dan hubungan antar tabel. Anda dapat memindahkan tabel untuk mengaturnya sesuka Anda.

  3. Simpan diagram sebagai "SchoolDiagram" dan tutup.

Jika Anda mengunduh file School.mdf yang sesuai dengan tutorial ini, Anda dapat melihat diagram database dengan mengklik dua kali SchoolDiagram di bawah Diagram Database di Server Explorer.

Gambar38

Diagram terlihat seperti ini (tabel mungkin berada di lokasi yang berbeda dari apa yang diperlihatkan di sini):

Gambar04

Membuat Model Data Kerangka Kerja Entitas

Sekarang Anda dapat membuat model data Entity Framework dari database ini. Anda dapat membuat model data di folder akar aplikasi, tetapi untuk tutorial ini Anda akan menempatkannya di folder bernama DAL (untuk Lapisan Akses Data).

Di Penjelajah Solusi, tambahkan folder proyek bernama DAL (pastikan folder tersebut berada di bawah proyek, bukan di bawah solusi).

Klik kanan folder DAL lalu pilih Tambahkan dan Item Baru. Di bawah Templat terinstal, pilih Data, pilih templat Model Data Entitas ADO.NET , beri nama SchoolModel.edmx, lalu klik Tambahkan.

Gambar05

Ini memulai Wizard Model Data Entitas. Pada langkah wizard pertama, opsi Hasilkan dari database dipilih secara default. Klik Berikutnya.

Gambar06

Di langkah Pilih Koneksi Data Anda , biarkan nilai default dan klik Berikutnya. Database Sekolah dipilih secara default dan pengaturan koneksi disimpan dalam file Web.config sebagai SchoolEntities.

Gambar07

Di langkah wizard Pilih Objek Database Anda , pilih semua tabel kecuali sysdiagrams (yang dibuat untuk diagram yang Anda buat sebelumnya) lalu klik Selesai.

Gambar08

Setelah selesai membuat model, Visual Studio menunjukkan representasi grafis objek Kerangka Kerja Entitas (entitas) yang sesuai dengan tabel database Anda. (Seperti diagram database, lokasi elemen individual mungkin berbeda dari apa yang Anda lihat dalam ilustrasi ini. Anda dapat menyeret elemen di sekitar untuk mencocokkan ilustrasi jika Anda mau.)

Gambar09

Menjelajahi Model Data Kerangka Kerja Entitas

Anda dapat melihat bahwa diagram entitas terlihat sangat mirip dengan diagram database, dengan beberapa perbedaan. Salah satu perbedaannya adalah penambahan simbol di akhir setiap asosiasi yang menunjukkan jenis asosiasi (hubungan tabel disebut asosiasi entitas dalam model data):

  • Asosiasi satu-ke-nol-atau-satu diwakili oleh "1" dan "0..1".

    Gambar39

    Dalam hal ini, Person entitas mungkin atau mungkin tidak dikaitkan dengan OfficeAssignment entitas. Entitas OfficeAssignment harus dikaitkan dengan Person entitas. Dengan kata lain, instruktur mungkin atau mungkin tidak ditugaskan ke kantor, dan kantor apa pun hanya dapat ditetapkan ke satu instruktur.

  • Asosiasi satu-ke-banyak diwakili oleh "1" dan "*".

    Gambar40

    Dalam hal ini, Person entitas mungkin atau mungkin tidak memiliki entitas terkait StudentGrade . Entitas StudentGrade harus dikaitkan dengan satu Person entitas. StudentGrade entitas sebenarnya mewakili kursus terdaftar dalam database ini; jika siswa terdaftar dalam kursus dan belum ada nilai, Grade properti null. Dengan kata lain, seorang siswa mungkin belum terdaftar dalam kursus apa pun, dapat didaftarkan dalam satu kursus, atau dapat didaftarkan dalam beberapa kursus. Setiap nilai dalam kursus terdaftar hanya berlaku untuk satu siswa.

  • Asosiasi banyak ke banyak diwakili oleh "*" dan "*".

    Gambar41

    Dalam hal ini, Person entitas mungkin atau mungkin tidak memiliki entitas terkait Course , dan kebalikannya juga benar: Course entitas mungkin atau mungkin tidak memiliki entitas terkait Person . Dengan kata lain, seorang instruktur dapat mengajar beberapa kursus, dan kursus dapat diajarkan oleh beberapa instruktur. (Dalam database ini, hubungan ini hanya berlaku untuk instruktur; tidak menautkan siswa ke kursus. Siswa ditautkan ke kursus berdasarkan tabel StudentGrades.)

Perbedaan lain antara diagram database dan model data adalah bagian Properti Navigasi tambahan untuk setiap entitas. Properti navigasi entitas mereferensikan entitas terkait. Misalnya, Courses properti dalam Person entitas berisi kumpulan semua entitas yang terkait dengan Person entitas tersebutCourse.

Gambar12

Namun perbedaan lain antara database dan model data adalah tidak adanya CourseInstructor tabel asosiasi yang digunakan dalam database untuk menautkan Person tabel dan Course dalam hubungan banyak ke banyak. Properti navigasi memungkinkan Anda mendapatkan entitas terkait Course dari Person entitas dan entitas terkait Person dari Course entitas, sehingga tidak perlu mewakili tabel asosiasi dalam model data.

Gambar11

Untuk tujuan tutorial ini, misalkan FirstName kolom Person tabel benar-benar berisi nama depan dan nama tengah seseorang. Anda ingin mengubah nama bidang untuk mencerminkan ini, tetapi administrator database (DBA) mungkin tidak ingin mengubah database. Anda dapat mengubah nama FirstName properti dalam model data, sambil membiarkan databasenya yang setara tidak berubah.

Di perancang, klik kanan FirstName di Person entitas, lalu pilih Ganti Nama.

Gambar13

Ketik nama baru "FirstMidName". Ini mengubah cara Anda merujuk ke kolom dalam kode tanpa mengubah database.

Gambar29

Browser model menyediakan cara lain untuk melihat struktur database, struktur model data, dan pemetaan di antaranya. Untuk melihatnya, klik kanan area kosong di perancang entitas lalu klik Browser Model.

Gambar18

Panel Browser Model menampilkan tampilan pohon. (Panel Browser Model mungkin ditampung dengan panel Penjelajah Solusi .) Simpul SchoolModel mewakili struktur model data, dan simpul SchoolModel.Store mewakili struktur database.

Gambar26

Perluas SchoolModel.Store untuk melihat tabel, memperluas Tabel/Tampilan untuk melihat tabel, lalu perluas Kursus untuk melihat kolom dalam tabel.

Gambar19

Perluas SchoolModel, perluas Jenis Entitas, lalu perluas simpul Kursus untuk melihat entitas dan properti dalam entitas.

Gambar20

Di panel Perancang atau Browser Model , Anda dapat melihat bagaimana Kerangka Kerja Entitas menghubungkan objek dari dua model tersebut. Person Klik kanan entitas dan pilih Pemetaan Tabel.

Gambar21

Ini membuka jendela Detail Pemetaan . Perhatikan bahwa jendela ini memungkinkan Anda melihat bahwa kolom FirstName database dipetakan ke FirstMidName, yang merupakan apa yang Anda ganti namanya menjadi dalam model data.

Gambar22

Kerangka Kerja Entitas menggunakan XML untuk menyimpan informasi tentang database, model data, dan pemetaan di antaranya. File SchoolModel.edmx sebenarnya adalah file XML yang berisi informasi ini. Perancang merender informasi dalam format grafis, tetapi Anda juga bisa menampilkan file sebagai XML dengan mengklik kanan file .edmx di Penjelajah Solusi, mengklik Buka Dengan, dan memilih Editor XML (Teks). (Perancang model data dan editor XML hanyalah dua cara berbeda untuk membuka dan bekerja dengan file yang sama, sehingga Anda tidak dapat membuka perancang dan membuka file di editor XML secara bersamaan.)

Anda sekarang telah membuat situs web, database, dan model data. Di panduan berikutnya, Anda akan mulai bekerja dengan data menggunakan model data dan kontrol ASP.NET EntityDataSource .