Entity Framework'e genel bakış

Entity Framework, veri odaklı yazılım uygulamalarının geliştirilmesini destekleyen ADO.NET teknolojileri kümesidir. Veri odaklı uygulamaların mimarları ve geliştiricileri, çok farklı iki hedefe ulaşma ihtiyacıyla mücadele etti. Çözdükleri iş sorunlarının varlıklarını, ilişkilerini ve mantığını modellemeli ve verileri depolamak ve almak için kullanılan veri altyapılarıyla da çalışmalıdır. Veriler, her biri kendi protokollerine sahip birden çok depolama sistemini kapsayabilir; tek bir depolama sistemiyle çalışan uygulamaların bile depolama sisteminin gereksinimlerini verimli ve sürdürülebilir uygulama kodu yazma gereksinimleriyle dengelemesi gerekir.

Entity Framework, geliştiricilerin, bu verilerin depolandığı temel veritabanı tabloları ve sütunlarıyla ilgilenmek zorunda kalmadan, müşteriler ve müşteri adresleri gibi etki alanına özgü nesneler ve özellikler biçiminde verilerle çalışmasını sağlar. Entity Framework ile geliştiriciler, verilerle ilgilenirken daha yüksek bir soyutlama düzeyinde çalışabilir ve geleneksel uygulamalara göre daha az kodla veri odaklı uygulamalar oluşturabilir ve koruyabilir. Entity Framework .NET Framework'ün bir bileşeni olduğundan, Entity Framework uygulamaları sürüm 3.5 SP1 ile başlayan .NET Framework'ün yüklü olduğu herhangi bir bilgisayarda çalıştırılabilir.

Modellere hayat verin

Uygulama veya hizmet oluştururken uzun süredir devam eden ve yaygın bir tasarım yaklaşımı, uygulamanın veya hizmetin üç bölüme bölünmesidir: etki alanı modeli, mantıksal model ve fiziksel model. Etki alanı modeli, modellenen sistemdeki varlıkları ve ilişkileri tanımlar. İlişkisel veritabanının mantıksal modeli, varlıkları ve ilişkileri yabancı anahtar kısıtlamaları olan tablolar halinde normalleştirir. Fiziksel model, bölümleme ve dizin oluşturma gibi depolama ayrıntılarını belirterek belirli bir veri altyapısının özelliklerini ele alır.

Fiziksel model, performansı geliştirmek için veritabanı yöneticileri tarafından geliştirilmiştir, ancak uygulama kodu yazan programcılar öncelikle SQL sorguları yazarak ve saklı yordamları çağırarak kendilerini mantıksal modelle çalışmaya sınırlandırır. Etki alanı modelleri genellikle bir uygulamanın gereksinimlerini yakalamak ve iletmek için bir araç olarak kullanılır; genellikle projenin ilk aşamalarında görüntülenen ve tartışılan ve sonra terk edilen eylemsiz diyagramlar olarak kullanılır. Birçok geliştirme ekibi kavramsal model oluşturmayı atlar ve ilişkisel veritabanında tablolar, sütunlar ve anahtarlar belirterek başlar.

Entity Framework, geliştiricilerin etki alanı modelindeki varlıkları ve ilişkileri sorgulamasına olanak tanıyarak (Entity Framework'te kavramsal model olarak adlandırılır) bu işlemleri veri kaynağına özgü komutlara çevirmek için Entity Framework'e güvenerek modellere ömür verir. Bu, uygulamaları belirli bir veri kaynağındaki sabit kodlanmış bağımlılıklardan korur.

Code First ile çalışırken kavramsal model koddaki depolama modeline eşlenir. Entity Framework, tanımladığınız nesne türlerine ve ek yapılandırmalara göre kavramsal modeli çıkarsayabilir. Eşleme meta verileri, etki alanı türlerinizi nasıl tanımladığınıza ve kodda sağladığınız ek yapılandırma bilgilerine bağlı olarak çalışma zamanında oluşturulur. Entity Framework, meta verileri temel alarak veritabanını gerektiği gibi oluşturur. Daha fazla bilgi için bkz. Model Oluşturma.

Varlık Veri Modeli Araçları ile çalışırken, kavramsal model, depolama modeli ve ikisi arasındaki eşlemeler XML tabanlı şemalarda ifade edilir ve karşılık gelen ad uzantılarına sahip dosyalarda tanımlanır:

  • Kavramsal şema tanım dili (CSDL), kavramsal modeli tanımlar. CSDL, Entity Framework'ün Varlık Veri Modeli uygulamasıdır. Dosya uzantısı .csdl'dir.

  • Depolama şema tanımı dili (SSDL), mantıksal model olarak da adlandırılan depolama modelini tanımlar. Dosya uzantısı .ssdl'dir.

  • Eşleme belirtimi dili (MSL), depolama ve kavramsal modeller arasındaki eşlemeleri tanımlar. Dosya uzantısı .msl'dir.

Depolama modeli ve eşlemeleri kavramsal modelde, veri sınıflarında veya uygulama kodunda değişiklik yapılması gerekmeden gerektiğinde değişebilir. Depolama modelleri sağlayıcıya özgü olduğundan, çeşitli veri kaynaklarında tutarlı bir kavramsal modelle çalışabilirsiniz.

Entity Framework, kavramsal modeldeki varlıklara ve ilişkilere göre işlem oluşturmak, okumak, güncelleştirmek ve silmek için bu model ve eşleme dosyalarını veri kaynağındaki eşdeğer işlemlere kullanır. Entity Framework, kavramsal modeldeki varlıkları veri kaynağındaki saklı yordamlara eşlemeyi bile destekler. Daha fazla bilgi için bkz . CSDL, SSDL ve MSL Belirtimleri.

Nesneleri verilere eşleme

Nesne odaklı programlama, veri depolama sistemleriyle etkileşim kurmak için bir zorluk oluşturur. Sınıfların organizasyonu genellikle ilişkisel veritabanı tablolarının kuruluşunu yansıtsa da, uyum mükemmel değildir. Birden çok normalleştirilmiş tablo genellikle tek bir sınıfa karşılık gelir ve sınıflar arasındaki ilişkiler genellikle tablolar arasındaki ilişkilerden farklı temsil edilir. Örneğin, bir satış siparişinin müşterisini temsil etmek için, bir Order sınıf bir sınıfın örneğine başvuru içeren bir Customer özellik kullanırken, Order veritabanındaki bir tablo satırı, tablodaki birincil anahtar değerine Customer karşılık gelen bir değere sahip bir yabancı anahtar sütunu (veya sütun kümesi) içerebilir. Bir Customer veritabanındaki tabloda karşılaştırılabilir bir sütun bulunmasa da, sınıfın OrderCustomer örneklerinin koleksiyonunu içeren adlı Orders bir özelliği olabilir. Entity Framework, geliştiricilere ilişkileri bu şekilde temsil etme veya veritabanında gösterildiği gibi ilişkileri daha yakından modelleme esnekliği sağlar.

Mevcut çözümler genellikle "empedans uyuşmazlığı" olarak adlandırılan bu boşluğu, yalnızca nesne odaklı sınıflar ve özellikler ilişkisel tablo ve sütunlarla eşleyerek kapatmayı denedi. Entity Framework, bu geleneksel yaklaşım yerine mantıksal modellerdeki ilişkisel tabloları, sütunları ve yabancı anahtar kısıtlamalarını kavramsal modellerdeki varlıklar ve ilişkilerle eşler. Bu, hem nesneleri tanımlama hem de mantıksal modeli iyileştirme konusunda daha fazla esneklik sağlar. Varlık Veri Modeli araçları, kavramsal modeli temel alan genişletilebilir veri sınıfları oluşturur. Bu sınıflar, geliştiricinin eklediği ek üyelerle genişletilebilen kısmi sınıflardır. Varsayılan olarak, belirli bir kavramsal model için oluşturulan sınıflar varlıkları nesne olarak gerçekleştirmeye ve değişiklikleri izlemeye ve kaydetmeye yönelik hizmetler sağlayan temel sınıflardan türetilir. Geliştiriciler, varlıklar ve ilişkilerle ilişkilendirmelerle ilgili nesneler olarak çalışmak için bu sınıfları kullanabilir. Geliştiriciler kavramsal bir model için oluşturulan sınıfları da özelleştirebilir. Daha fazla bilgi için bkz . Nesnelerle Çalışma.

Varlık verilerine erişme ve verileri değiştirme

Entity Framework, yalnızca başka bir nesne-ilişkisel eşleme çözümünden daha fazlası, temel olarak uygulamaların kavramsal modelde varlıklar ve ilişkiler olarak temsil edilen verilere erişmesini ve verileri değiştirmesini sağlamaktır. Entity Framework, nesne sorgularını kavramsal modelde temsil edilen varlık türlerine göre veri kaynağına özgü sorgulara çevirmek için model ve eşleme dosyalarındaki bilgileri kullanır. Sorgu sonuçları, Entity Framework'ün yönettiği nesnelere dönüştürülür. Entity Framework, kavramsal modeli sorgulamak ve nesneleri döndürmek için aşağıdaki yolları sağlar:

  • LINQ to Entities. Kavramsal modelde tanımlanan varlık türlerini sorgulamak için DilLe Tümleşik Sorgu (LINQ) desteği sağlar. Daha fazla bilgi için bkz . LINQ to Entities.

  • Varlık SQL'i. Kavramsal modeldeki varlıklarla doğrudan çalışan ve Varlık Veri Modeli kavramlarını destekleyen, depolamadan bağımsız SQL diyalekt. Entity SQL hem nesne sorgularıyla hem de EntityClient sağlayıcısı kullanılarak yürütülen sorgularla kullanılır. Daha fazla bilgi için bkz . Entity SQL'e Genel Bakış.

Entity Framework, EntityClient veri sağlayıcısını içerir. Bu sağlayıcı bağlantıları yönetir, varlık sorgularını veri kaynağına özgü sorgulara çevirir ve Entity Framework'ün varlık verilerini nesnelere dönüştürmede kullandığı bir veri okuyucu döndürür. Nesne gerçekleştirme gerekli olmadığında, EntityClient sağlayıcısı uygulamaların Entity SQL sorguları yürütmesine ve döndürülen salt okunur veri okuyucuyu kullanmasına olanak tanıyarak standart bir ADO.NET veri sağlayıcısı gibi de kullanılabilir. Daha fazla bilgi için bkz . Entity Framework için EntityClient Sağlayıcısı.

Aşağıdaki diyagramda verilere erişmek için Entity Framework mimarisi gösterilmektedir:

Entity Framework Architectural Diagram

Varlık Veri Modeli Araçları, kavramsal modeldeki varlık kapsayıcısını temsil eden veya System.Data.Entity.DbContext öğesinden System.Data.Objects.ObjectContext türetilen bir sınıf oluşturabilir. Bu nesne bağlamı, değişiklikleri izlemeye ve kimlikleri, eşzamanlılığı ve ilişkileri yönetmeye yönelik olanaklar sağlar. Bu sınıf ayrıca veri kaynağına ekleme, güncelleştirme ve silme işlemleri yazan bir SaveChanges yöntemi de kullanıma sunar. Sorgular gibi bu değişiklikler de sistem tarafından otomatik olarak oluşturulan komutlar veya geliştirici tarafından belirtilen saklı yordamlar tarafından yapılır.

Veri sağlayıcılar

Sağlayıcı, EntityClient kavramsal varlıklar ve ilişkiler açısından verilere erişerek ADO.NET sağlayıcı modelini genişletir. Entity SQL kullanan sorguları yürütür. Entity SQL, veritabanıyla iletişim kurmanızı sağlayan EntityClient temel sorgu dilini sağlar. Daha fazla bilgi için bkz . Entity Framework için EntityClient Sağlayıcısı.

Entity Framework, kurallı komut ağaçlarını destekleyen güncelleştirilmiş bir SqlClient Veri Sağlayıcısı içerir. Daha fazla bilgi için bkz . Entity Framework için SqlClient.

Varlık veri modeli araçları

Visual Studio, Entity Framework çalışma zamanıyla birlikte eşleme ve modelleme araçlarını içerir. Daha fazla bilgi için bkz . Modelleme ve Eşleme.

Daha fazla bilgi edinin

Entity Framework hakkında daha fazla bilgi edinmek için bkz:

Başlarken - Basit bir Entity Framework uygulamasının nasıl oluşturulacağını gösteren Hızlı Başlangıç'ı kullanarak hızlı bir şekilde çalışmaya başlama hakkında bilgi sağlar.

Entity Framework Terminolojisi - Varlık Veri Modeli ve Entity Framework tarafından sunulan ve Entity Framework belgelerinde kullanılan terimlerin çoğunu tanımlar.

Entity Framework Kaynakları - Entity Framework uygulamaları oluşturmak için kavramsal konulara ve dış konulara ve kaynaklara bağlantılar sağlar.

Ayrıca bkz.