Dukungan Enum - Code First

Nota

EF5 Onwards Only - Fitur, API, dll. yang dibahas di halaman ini diperkenalkan dalam Entity Framework 5. Jika Anda menggunakan versi yang lebih lama, beberapa atau semua informasi tidak berlaku.

Video dan panduan langkah demi langkah ini menunjukkan cara menggunakan jenis enum dengan Kode Kerangka Kerja Entitas Terlebih Dahulu. Ini juga menunjukkan cara menggunakan enum dalam kueri LINQ.

Panduan ini akan menggunakan Code First untuk membuat database baru, tetapi Anda juga dapat menggunakan Code First untuk memetakan database yang sudah ada.

Dukungan Enum diperkenalkan dalam Entity Framework 5. Untuk menggunakan fitur baru seperti enum, jenis data spasial, dan fungsi bernilai tabel, Anda harus menargetkan .NET Framework 4.5. Visual Studio 2012 menargetkan .NET 4.5 secara default.

Dalam Kerangka Kerja Entitas, enumerasi dapat memiliki jenis yang mendasar berikut: Byte, Int16, Int32, Int64 , atau SByte.

Tonton video

Video ini menunjukkan cara menggunakan tipe enum dengan Entity Framework Code First. Ini juga menunjukkan cara menggunakan enum dalam kueri LINQ.

Disajikan Oleh: Julia Kornich

Video: WMV | MP4 | WMV (ZIP)

Prasyarat

Anda harus menginstal edisi Visual Studio 2012, Ultimate, Premium, Professional, atau Web Express untuk menyelesaikan panduan ini.

 

Menyiapkan Proyek

  1. Buka Visual Studio 2012
  2. Pada menu File , arahkan ke Baru, lalu klik Proyek
  3. Di panel kiri, klik Visual C#, lalu pilih templat Konsol
  4. Masukkan EnumCodeFirst sebagai nama proyek dan klik OK

Tentukan Model Baru menggunakan Kode Terlebih Dahulu

Saat menggunakan pengembangan Code First, Anda biasanya mulai dengan menulis kelas .NET Framework yang menentukan model konseptual (domain) Anda. Kode di bawah ini mendefinisikan kelas Departemen.

Kode ini juga mendefinisikan enumerasi DepartmentNames. Secara default, enumerasi berjenis int . Properti Nama pada kelas Departemen adalah tipe DepartmentNames.

Buka file Program.cs dan tempel definisi kelas berikut.

public enum DepartmentNames
{
    English,
    Math,
    Economics
}     

public partial class Department
{
    public int DepartmentID { get; set; }
    public DepartmentNames Name { get; set; }
    public decimal Budget { get; set; }
}

 

Tetapkan Tipe Turunan DbContext

Selain menentukan entitas, Anda perlu menentukan kelas yang berasal dari DbContext dan mengekspos properti DbSet<TEntity> . Properti DbSet<TEntity> memberi tahu konteks jenis apa yang ingin disertakan dalam model.

Instans jenis turunan DbContext mengelola objek entitas selama run time, yang mencakup mengisi objek dengan data dari database, pelacakan perubahan, dan menyimpan data ke database.

Jenis DbContext dan DbSet didefinisikan dalam rakitan EntityFramework. Kami akan menambahkan referensi ke DLL ini dengan menggunakan paket EntityFramework NuGet.

  1. Di Penjelajah Solusi, klik kanan pada nama proyek.
  2. Pilih Kelola Paket NuGet...
  3. Dalam dialog Kelola Paket NuGet, Pilih tab Online dan pilih paket EntityFramework .
  4. Klik Instal

Perhatikan bahwa selain rakitan EntityFramework, referensi ke rakitan System.ComponentModel.DataAnnotations dan System.Data.Entity juga ditambahkan.

Di bagian atas file Program.cs, tambahkan pernyataan penggunaan berikut:

using System.Data.Entity;

Dalam Program.cs tambahkan definisi konteks. 

public partial class EnumTestContext : DbContext
{
    public DbSet<Department> Departments { get; set; }
}

 

Pertahankan dan Ambil Data

Buka file Program.cs tempat metode Utama ditentukan. Tambahkan kode berikut ke fungsi Utama. Kode menambahkan objek Departemen baru ke konteks. Kemudian menyimpan data. Kode ini juga menjalankan kueri LINQ yang mengembalikan Departemen di mana namanya adalah DepartmentNames.English.

using (var context = new EnumTestContext())
{
    context.Departments.Add(new Department { Name = DepartmentNames.English });

    context.SaveChanges();

    var department = (from d in context.Departments
                        where d.Name == DepartmentNames.English
                        select d).FirstOrDefault();

    Console.WriteLine(
        "DepartmentID: {0} Name: {1}",
        department.DepartmentID,  
        department.Name);
}

Kompilasi dan jalankan aplikasi. Contoh ini menghasilkan output berikut:

DepartmentID: 1 Name: English

 

Menampilkan Database yang Dihasilkan

Saat Anda menjalankan aplikasi untuk pertama kalinya, Kerangka Kerja Entitas membuat database untuk Anda. Karena kami telah menginstal Visual Studio 2012, database akan dibuat pada instans LocalDB. Secara default, Kerangka Kerja Entitas memberi nama database setelah nama konteks turunan yang sepenuhnya memenuhi syarat (untuk contoh ini adalah EnumCodeFirst.EnumTestContext). Waktu berikutnya database yang ada akan digunakan.  

Perhatikan, bahwa jika Anda membuat perubahan apa pun pada model Anda setelah database dibuat, Anda harus menggunakan Migrasi Pertama Kode untuk memperbarui skema database. Lihat Kode Pertama ke Database Baru untuk contoh penggunaan Migrasi.

Untuk menampilkan database dan data, lakukan hal berikut:

  1. Di menu utama Visual Studio 2012, pilih Tampilkan ->SQL Server Object Explorer.
  2. Jika LocalDB tidak ada dalam daftar server, klik tombol kanan mouse di SQL Server dan pilih Tambahkan SQL Server Gunakan Autentikasi Windows default untuk menyambungkan ke instans LocalDB
  3. Memperluas simpul LocalDB
  4. Buka folder Basis Data untuk melihat basis data baru dan telusuri tabel Departemen. Perhatikan bahwa Code First tidak membuat tabel yang memetakan ke jenis enumerasi.
  5. Untuk melihat data, klik kanan pada tabel dan pilih Tampilkan Data

RINGKASAN

Dalam panduan ini kita melihat cara menggunakan tipe enum dengan Entity Framework Code First.