ADO.NET Entity. Framework. Temel Kavramlar

Benzer belgeler
YZM 3215 İleri Web Programlama

İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19. Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri

LINQ (Temel Kavramlar)

VERİ TABANI YÖNETİM SİSTEMLERİ-II

Veritabanı. Ders 2 VERİTABANI

SORGULAR VE ÇEŞİTLERİ II

5 SQL- Yapısal Sorgulama Dili. Veritabanı 1

ORM & Hibernate. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu

ADO.NET. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

VERİTABANI ORGANİZASYONU

1 Temel Kavramlar. Veritabanı 1

İngilizce'de Relational Database Management System (RDBMS) olarak ifade edilir.

Veritabanı sistemlerinde veri bütünlüğünü sağlayabilmek için CONSTRAINTS olarak adlandırılan bazı zorlayıcı ifadeler kullanılabilir.

Üst Düzey Programlama

Veri Tabanı Hafta Dersi

Asp.Net Veritabanı İşlemleri

2-Veritabanı Yönetim Sistemleri/ Temel Kavramlar

LINQ Language Integrated Query Dille Bütünleştirilmiş Sorgu Bir Veri Tabanı Tablosundan Veri Gösterme

SQL Komutları (2) Uzm. Murat YAZICI

Veritabanı İşlemleri

EBE-368 Veri Tabanı Yönetim Sistemleri İlişkisel Model (The Relational Model)

Veri Bütünlüğü ve Constraint ler. Veritabanı 1

Veritabanı Tasarımı. NOT NULL ve UNIQUE Kısıtlamaları Tanımlama

VeriTabanı Uygulamaları

ADO.NET Entity. Abdullah UĞRAŞKAN Web Developer. apostylee.com twitter.com/apostylee

Bölüm 1: Veritabanı Yönetim Sistemlerine Giriş

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

Veritabanı Tasarımı. Tablo Oluşturma

Veritabanı Tasarımı. Kartezyen Çarpım ve Join İşlemleri

Veritabanı Tasarımı. Birincil Anahtar, İkincil Anahtar ve Kontrol Kısıtlamaları

Veri Tabanı Hafta Dersi

Kets DocPlace LOGO Entegrasyonu

ADO.NET VERİTABANINA BAĞLANTI. Bir web formu üzerinden veritabanına bağlantımızı anlatacağım. UYGULAMA 1

MOBİL UYGULAMA GELİŞTİRME

Bölüm 4: DDL Veri Tanımlama Dili

İLİŞKİSEL VERİTABANLARI

Oracle da kullanılan veri tipleri:

Veritabanı Yönetim Sistemleri (Veritabanı Kavramı) Veritabanı Sistemleri

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

Veritabanı Tasarımı. DML İşlemleri ve Görünümler

EĞİTİM : LINQ to SQL. Bölüm : LINQ e Genel Bakış. Konu : LINQ Nedir? Page 1 of 25

VERİ TABANI ve YÖNETİMİ

Veritabanı Yönetimi Bilgisayarların. Keşfi Hedefler. Veritabanı, Veri ve Bilgi. Veritabanı, Veri ve Bilgi. Veritabanı, Veri ve Bilgi

Computer Engineering Department DATABASE MANAGEMENT SYSTEMS LAB 2 WORKSHEET

Veritabanı Tasarımı. Alt Sorgu Temelleri

«BM364» Veritabanı Uygulamaları

SQL e Giriş. Uzm. Murat YAZICI

VERİTABANI Veritabanı Yönetimi

Tavsiye Edilen Önhazırlık Veritabanı kavramını öğrenmek

VERİ TABANI YÖNETİM SİSTEMLERİ

Veritabanı İşlemleri

VERĐTABANI YÖNETĐM SĐSTEMLERĐ

Kepware Veritabanı Ürünleri. Teknolojiye Genel Bir Bakış

Veritabanı Tarihi. 1960s: Bilgisayarlar artan saklama kapasiteleri ile birlikte firmalar tarafından karşılanabilir hale gelmeye başladı

Genel Kavramlar. Bilgisayar ortamında işlenebilecek durumda bulunan kayıtlar. Birbiri ile ilişkili veriler topluluğu ve veriler arası ilişkiler

1 Temel Kavramlar. Veritabanı 1

BÖLÜM -7: TABLOLARI OLUŞTURMA VE YÖNETME

BÖLÜM- 8: DİĞER ŞEMA NESNELERİNİ OLUŞTURMA

Veritabanı Tasarımı. Sütun Değerlerini Güncelleme ve Satırları Silme

«BM364» Veritabanı Uygulamaları

Üst Düzey Programlama

Veritabanlarına ve SQL'e Giriş. Devrim GÜNDÜZ. Teknoloji Destek Merkezi --

Tablolar Arası İlşikiler ve Alan Özellikleri Siparis.musteri_no musteri.musteri_no Siparis.urun_kodu musteri.urun_kodu

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

Veri Tabanı Programlamaya Giriş

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Ara Öğr. Gör. Murat KEÇECĠOĞLU

ADO.NET ve DATASET. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

Veri Tabanı Yönetim Sistemleri Bölüm - 3

Herhangi bir tablonun tekrarlı veriler içerdiği duruma birinci normal form denir. Birinci normal formu Aşağıdaki tablo ile ele alacağız.

3. Hafta Tablo İşlemleri BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri Kısıtlamalar (Constraints)

KISITLAMALAR (CONSTRAINT)

Üst Düzey Programlama

YAPISAL SORGULAMA DİLİ (SQL)

Veritabanı Tasarımı. Veritabanı Hareketleri

BMB202. Veritabanı Yönetimi Ders 12. ORM, LINQ, XML, JSON. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

TRIGGER. Trigger lar, tablo üzerinde tanımlanabilen ve bu tablo üzerinde bir işlem gerçekleştiğinde tetiklenen programlama ögeleridir.

Microsoft SQL Server Sorgulama

Tablolar Arası İlşikiler ve Alan Özellikleri. Şekil 1. Magaza veritabanının tabloları ve tablolar arasındaki ilişkiler

Üst Düzey Programlama

C Sharp /Veri tabanı işlemleri

BİLİŞİM TEKNOLOJİLERİ

Ders Tanıtım Sunumu. Database Managegement II. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

JAVA RMI ve Hibernate teknolojileri kullanılarak çok amaçlı bir yazılım altyapısı hazırlanması

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon

SQL'e Giriş. SELECT Deyimi. SQL Komutları. Yardımcı Deyimler

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

12. hafta Bulut Bilişimde Veritabanı ve Microsoft Azure Kullanımı

Veritabanı Tasarımı. Tablo Değiştirme

1 FULL STACK DEVELOPMENT NEDIR? 1 Nasıl Full Stack Developer Olurum? 2

VERİ TABANI YÖNETİM SİSTEMLERİ II. 9. FORMLAR ve ORACLE FORMS PROGRAMINDA FORM OLUŞTURMA

Tavsiye Edilen Önhazırlık Temel SQL Server 2000 bilgisi edinmek.

Yukarıdakilerden hangileri DML (Data Manipulation Language) ile gerçekleştirilir?

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

TeamBase5 BELEDİYE İLETİŞİM MERKEZİ SIEMENS

ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Veri Tabanı ve Yönetimi (BİL 301)

Veritabanına Uygulanması

20461C Querying Microsoft SQL Server Modül Seviye Belirleme Testi

Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) İlişkisel Veritabanı Modeli

Transkript:

ADO.NET Entity Framework Temel Kavramlar

Ele alınacak başlıklar Geçmişteki bilgiler Models, Mapping ve Metadata Entity SQL ve LINQ to Entities Object Services EF ile LINQ to SQL in karşılaştırılması

Nesne OOP prensiplerine göre oluşturulurlar. Miras alma ön plandadır. Linkler, referanslarla verilir. Bellek adresleri ile tanımlanırlar. Çalışma zamanında tanımlanan veri türlerini kullanırlar. Veriyi listeler ve ağaçlar şeklinde saklayabilirler. Veritabanı İlişkisel cebire göre oluşturulurlar. Normalizasyon gerektirir. Linkler, foreign key lerle verilir. Primary key ler ile tanımlanırlar. Veritabanı tarafından tanımlanan veri türlerini kullanırlar. Veriyi tuple lar şeklinde saklayabilirler. Şu an için transactional değildir. Ağırlıklı olarak transactional dır.

EF ü Neden Kullanmalıyım?

Nerelerde Kullanılabilir?

Entity Framework Yeni ADO.NET olarak adlandırılabilir. ADO.NET den daha üst düzey bir soyutlama (abstraction) sağlar. Yeni olarak Entity Data Model kavramı ön plana çıkar. Geleneksel ORM araçlarının ötesinde DataSevisleri sağlayabilir. Özellikleri LINQ Provider Visual Studio Designer desteği bulunmaktadır. Esnek mapping Değişik data providerları ile çalışabilmektedir. (Oracle, DB2, vd.)

Entity Varlığı devam eden her obje entity dir. Bir Entity, Bir veya daha fazla karmaşık özellikleri olabilir. Diğer entityle ile bir veya daha fazla bir ilişki içinde olabilir. Entity key, entitylerin birbirinden eşsiz olarak ayrılmasını sağlar.

Entity Data Model

Entity Designer Entity leri ve relationshipleri oluşturur. Key leri,tipleri, ve null olabilecek properyleri tanımlar.

Model Browser Çok fazla entity olduğunda GUI üzerinde navigasyon zor bir hal alabilir. Bu işlemi model browser kullanarak daha hızlı bir şekilde gerçekleştirebiliriz. Model geçerli kılınabilir. (Validation) Model, veritabanından update edilebilir.

Mapping Details Entity ler bir veya daha fazla tablo arasında haritalanabilir. Detayları görmek ve editlemek için dizayn ekranında bir entity nin üzerinde sağ tıklanarak ulaşılabilir.

Entity Framework Servisleri

Entity Client Bu katmanda altta var olan veritabanından bağımsız olarak sorgular oluşturulur. Sorgular istencilere esql (Entity SQL ) şeklinde gönderilirler. Entity client, veritabanı ile iletişimini database provider ile sorunsuz bir şekilde gerçekleştirir. Sonuçlar DbDataReader ile kullanılır.

Entity SQL Entity Data Model için var olan SQL dir. Provider neutral dır.

ObjectContext (DbContext) Tüm entity ler için gateway görevi görür. Mapping ve object metadata üzerine kuruludur. Entity ler Entity Set lerin içerisinde varlıklarını sürdürürler. Geriye döndüş için DataReader yerine objelerin kendisini kullanır.

LINQ to Entities

Deferred Loading EF, varlıklar arasındaki ilişkiler için lazy loading kavramını kullanmaktadır. İlişkili varlıklar (entity ler) açıkça belirtilip Load edilmelidir. Veya ObjectContext üzerinde Include metodu da kullanılabilir.

Insertion Herhangi bir entity eklemek için AddObject() metodu kullanılır. Tip güvenli olan ObjectContext metotları barındırır. her bir entity için Add

Updates Change tracking service herhangi bir entity de meydana gelen değişiklikleri kayıt altına almaktadır. SaveChanges(), değişen entity leri otomatik olarak update edecektir.

Deletes Silme için DelteObject() metodu kullanılır. SaveChanges() her bir obje için bir tek DELETE yaratacaktır. SQL den farklı olarak silme işleminden önce silinecek olan kaydın sorgulanarak getirilmesi gerekmektedir.

ADO.NET Entity Framework Yaklaşımlar

Ele Alınacak Başlıklar Yaklaşımlar (*) Identity (**) Varlıkların yaşam döngüsü ve iş ünitesi (Entity Lifecycle and Unit of Work) (***) Değişikliklerin takibi (Change Tracking) İlişkilerin güncellenmesi (Updating Associations) Eşzamanlığın yönetimi (Concurrency Management)

EF ü kullanmaya başlamadan önce izlenmesi gereken 3 temel yaklaşım bulunmaktadır: Database First Model First Code First * Yaklaşımlar

ORM ler ve Entity Identity ORM araçları entity lerden database semantikleri çerçevesinde davranmasını ister. Veritabanı ise identity leri primary keyler olarak ele alır. ADO.NET de iki nesne veritabanındaki aynı satırı temsil edebilir. Böyle bir yaklaşım ise nesne yönelik bakış açısından mantıklı değildir.

Row Identity Bellekteki nesneler, veritabanındaki satırlar ile nasıl ilişkilidir? VT deki satırlar, birbirlerinden primary key ile birbirlerinden ayırt edilirler. ADO.NET de var olan DataSet ve SqlReader kullanılarak, veritabanındaki bir satır, aynı Select sorgusu iki kez çalıştırılarak elde edildiğinde bellekteki görünümü nasıl olacaktır?

Object Identity LINQ to SQL kullanılarak bir satır üzerinde aynı sorguyu iki kez işletildiğinde bellekte farklı konumlarda olan iki farklı nesne oluşturulmaz. (Key unique olmak üzere Dictionary <Key, Value> şeklinde düşünülebilir. ) ObjectContex

** Identity Map Pattern Bu kalıp, veritabanından okunan tüm objelerin kaydını tek bir business transaction içerisinde saklamaktadır. Eentity Framework bu kalıbı kullanmaktadır. Her bir ObjectContext nesnesi kendi Identity Map i ile ilişki içerisindedir. Aynı kayıt için iki farklı ObjectContext üzerinden yapılan sorgulamalar iki farklı nesne döndürürler.

Identity Map Pattern( ) Veriye dışarıdan yapılan sonradan müdahaleler ObjectContext tarafından görüntülenmez. Bunun nedeni; Üzerinde işlem yapılan ObjectContext de consistency ve integrity nin sağlanmak istenmesidir. ObjectContext üzerinde yapılan değişiklikler, yerelde (localde) yapılan değişiklerdir. Entity Framework primary key e sahip olmayan bir tabloyu update edemez.

**Unit of Work Pattern (İş Ünitesi Deseni) Business transaction tarafından etkilenen nesnelerin bir listesini ele alır ve eğer objeler üzerinde bir değişiklik olmuşsa bunu VT ye yansıtır. ObjectContext nesnesi bu prensibe göre çalışır. Bir web uygulaması için iş ünitesi deseni tek bir requestin işlenmesi olabilir. Akıllı bir istemci için ise, bir formun yaşam döngüsü olabilir. Unutulmamalıdır ki ObjectContext in oluşturulmasının maliyeti çok düşüktür.

Varlıkların Yaşam Döngüsü (Entity Lifecycle) Bir nesne ObjectContext in, kendisinden haberdar olmasından sonra bir entity olarak işlem görür. Böylelikle yaşam döngüsü başlamış olur. Diğer bir değişle, obje veritabanından çekildikten sonra Entity olarak işlem görür. Eğer istenirse, yeni objeler Entity e eklenebilir. Yaşam döngüsü ObjectContext in GC tarafından bellekten toplanması ile son bulur.

Değişiklerin Takibi (Change Tracking) *** ObjectContext değişiklikleri bizim yerimize takip edebilmektedir. ObjectContext hangi nesnenin değişikliğe uğradığını nereden bilmektedir?

EF, bir obje yaşam döngüsüne başladığında objenin ilk görünümünü (snapshot) almaktadır. Tüm değerler kopyalanmaktadır. SaveChanges() metodu işletileceği zaman, önceden alınan snapshot ile objenin o anki değerleri karşılaştırılmaktadır. Bu durum ilave iş yükü getirmektedir. Bu özellik ObjectContext in ObjectTrackingEnabled özelliği kapatılarak iptal edilebilir.

Özet ObjectContext, EF deki en temel çalışma birimidir (unit of work). EF, optimistic concurrency mekanizmasını kullanmaktadır. Relationshipler, framework tarafından yönetilir. EF kullanırken, vt öğelerinden ziyade objeler şeklinde düşünülmeye çalışılmalıdır.