Enum Desteği - Code First

Uyarı

YALNıZCA EF5'e Doğru - Bu sayfada ele alınan özellikler, API'ler vb. Entity Framework 5'te sunulmuştur. Önceki bir sürümü kullanıyorsanız, bilgilerin bazıları veya tümü geçerli değildir.

Bu video ve adım adım izlenecek yol, Entity Framework Code First ile numaralandırma türlerinin nasıl kullanılacağını gösterir. Ayrıca bir LINQ sorgusunda numaralandırmaların nasıl kullanılacağını da gösterir.

Bu kılavuzda yeni bir veritabanı oluşturmak için Code First kullanılacaktır, ancak mevcut bir veritabanını eşlemek için de Code First kullanabilirsiniz.

Enum desteği Entity Framework 5'te tanıtıldı. Yeni özellikler olan sabit listeleri, uzamsal veri türleri ve tablolu fonksiyonları kullanmak için .NET Framework 4.5'i hedeflemeniz gerekir. Visual Studio 2012 varsayılan olarak .NET 4.5'i hedefler.

Entity Framework'te bir numaralandırma aşağıdaki temel türlere sahip olabilir: Byte, Int16, Int32, Int64 veya SByte.

Videoyu izleyin

Bu videoda, Entity Framework Code First ile numaralandırma türlerinin nasıl kullanılacağı gösterilmektedir. Ayrıca bir LINQ sorgusunda numaralandırmaların nasıl kullanılacağını da gösterir.

Sunum Yapan: Julia Kornich

Video: WMV | MP4 | WMV (ZIP)

Önkoşullar

Bu kılavuzu tamamlamak için Visual Studio 2012, Ultimate, Premium, Professional veya Web Express sürümünün yüklü olması gerekir.

 

Projeyi ayarlama

  1. Visual Studio 2012'i açma
  2. Dosya menüsünde Yeni'nin üzerine gelin ve Proje'ye tıklayın
  3. Sol bölmede Visual C# öğesine tıklayın ve konsol şablonunu seçin
  4. Projenin adı olarak EnumCodeFirst yazın ve Tamam'a tıklayın

Önce Kod Kullanarak Yeni Model Tanımlama

Code First geliştirmesini kullanırken genellikle kavramsal (etki alanı) modelinizi tanımlayan .NET Framework sınıfları yazarak başlarsınız. Aşağıdaki kod Department sınıfını tanımlar.

Kod, DepartmentNames numaralandırmasını da tanımlar. Sabit listesi varsayılan olarak int türündedir. Department sınıfındaki Name özelliği DepartmentNames türündedir.

Program.cs dosyasını açın ve aşağıdaki sınıf tanımlarını yapıştırın.

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

 

DbContext Türetilmiş Türünü Tanımlama

Varlıkları tanımlamaya ek olarak, DbContext'ten türetilen ve DbSet<TEntity> özelliklerini kullanıma sunan bir sınıf tanımlamanız gerekir. DbSet<TEntity> özellikleri, bağlama modele hangi türleri eklemek istediğinizi bildirir.

DbContext türetilmiş türünün bir örneği, çalışma zamanında varlık nesnelerini yönetir. Bu, nesneleri veritabanındaki verilerle doldurma, değişiklik izleme ve verileri veritabanında kalıcı hale getirme gibi işlemleri içerir.

DbContext ve DbSet türleri EntityFramework derlemesinde tanımlanır. EntityFramework NuGet paketini kullanarak bu DLL'ye bir başvuru ekleyeceğiz.

  1. Çözüm Gezgini'nde proje adına sağ tıklayın.
  2. NuGet Paketlerini Yönet... öğesini seçin.
  3. NuGet Paketlerini Yönet iletişim kutusunda Çevrimiçi sekmesini seçin ve EntityFramework paketini seçin.
  4. Yükle'ye tıklayın

EntityFramework derlemesine ek olarak System.ComponentModel.DataAnnotations ve System.Data.Entity derlemelerine de başvurular eklendiğini unutmayın.

Program.cs dosyasının en üstüne aşağıdaki using deyimini ekleyin:

using System.Data.Entity;

Program.cs bağlam tanımını ekleyin. 

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

 

Verileri Sakla ve Al

Main yönteminin tanımlandığı Program.cs dosyasını açın. Main işlevine aşağıdaki kodu ekleyin. Kod, bağlama yeni bir Departman nesnesi ekler. Ardından verileri kaydeder. Kod ayrıca adı DepartmentNames.English olan bir Departman döndüren bir LINQ sorgusu yürütür.

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

Uygulamayı derleyin ve çalıştırın. Program aşağıdaki çıkışı oluşturur:

DepartmentID: 1 Name: English

 

Oluşturulan Veritabanını Görüntüleme

Uygulamayı ilk kez çalıştırdığınızda, Entity Framework sizin için bir veritabanı oluşturur. Visual Studio 2012 yüklü olduğundan veritabanı LocalDB örneğinde oluşturulur. Varsayılan olarak, Entity Framework veritabanını türetilen bağlamın tam adından sonra ( enumCodeFirst.EnumTestContext olan bu örnek için) adlandırabilir. Mevcut veritabanı sonraki zamanlarda kullanılacaktır.  

Veritabanı oluşturulduktan sonra modelinizde herhangi bir değişiklik yaparsanız, veritabanı şemasını güncelleştirmek için Code First Migrations kullanmanız gerektiğini unutmayın. Geçişleri kullanma örneği olarak bkz. İlk Kod'u Yeni Bir Veritabanına Taşıma.

Veritabanını ve verileri görüntülemek için aşağıdakileri yapın:

  1. Visual Studio 2012 ana menüsünde Görünüm ->SQL Server Nesne Gezgini'ni seçin.
  2. LocalDB sunucu listesinde değilse , SQL Server'da sağ fare düğmesine tıklayın ve SQL Server Ekle LocalDB örneğine bağlanmak için varsayılan Windows Kimlik Doğrulamasını kullan'ı seçin
  3. LocalDB düğümünü genişletme
  4. Yeni veritabanını görmek için Veritabanları klasörünü açın ve Bölüm tablosuna göz atın Not: Code First, numaralandırma türüne eşlenen bir tablo oluşturmaz
  5. Verileri görüntülemek için tabloya sağ tıklayın ve Verileri Görüntüle'yi seçin

Özet

Bu kılavuzda, Entity Framework Code First ile numaralandırma türlerinin nasıl kullanılacağını inceledik.