Your SlideShare is downloading. ×
0
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

8,723

Published on

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
8,723
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
121
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Yeni Nesil Veri Erişim: ADO.NET Entity Framework (E/R Model, ORM, LINQ . . .) Ahmet Kaymaz akaymaz @ ahmetkaymaz.com http://www. ahmetkaymaz.co m
  • 2. Ajanda <ul><li>Yazılım geliştirme süreçleri ( Şelale Modeli ) </li></ul><ul><li>Veri Modelleme </li></ul><ul><li>Varlık-İlişki (Entity-Relationship, ER) Modeli </li></ul><ul><li>Nesne-İlişki Haritalama (Object-Relational Mapping - ORM ) </li></ul><ul><li>ADO.NET Entity Framework </li></ul><ul><li>LINQ giriş </li></ul>
  • 3. Yazılım Geliştirme Süreçleri Yazılım yaşam döngüsü. . . girdi çıktı Analiz Tasarım Kodlama Sistem testi Bakım Şelale Modeli (Waterfall Model)
  • 4. Çözümleme ve Gereksinimlerin Tanımlanması ( Analysis &amp; Requirements Specification ) <ul><li>Gereksinim , gerçekleştirilmesi istenilen ihtiyaçların tanımlanmasıdır. </li></ul><ul><li>Gereksinimler bir yazılımın temel kaynağını oluşturur. </li></ul><ul><li>Bu evre yazılımın amacının ve işlevinin tanımlandığı, donanım veya yazılım tabanlı gereksinimlerin belirlendiği, kısıtlamaların oluşturulduğu, maliyetlerin hesaplandığı, yazılım evi ve müşteri arasındaki iş bölümünün sağlandığı evredir. </li></ul><ul><li>Kavramsal model in oluşturulması. </li></ul><ul><li>Sistem gereksinimi, Kullanıcı gereksinimi </li></ul><ul><li>Gereksinimler tam ve net bir şekilde ifade edilmelidir. </li></ul><ul><li>Gereksinim Mühendisliği (Requirements Engineering) sorumluluğundadır. </li></ul>
  • 5. Yazılım ve Sistem Tasarımı (Software &amp; System Design) <ul><li>Gereksinimler listesi referans alınarak yazılımın mimari tasarımı oluşturulur. </li></ul><ul><li>Bu evrede alt sistemler ve aralarındaki ilişkiler belirlenir ve onlara ait ara-yüzlerin nasıl olacağı tasarlanır. </li></ul><ul><li>Gereksinimler uygulamanın neler yapabileceğini tanımlarken Tasarım uygulamanın bunu nasıl yapacağını ifade eder. </li></ul><ul><li>Tasarım sürecinde aşağıdaki aktiviteler gerçekleştirilir; </li></ul><ul><ul><li>Mimari tasarım </li></ul></ul><ul><ul><li>Bileşen ve Kullanıcı Ara yüz tasarımı </li></ul></ul><ul><ul><li>Veri yapısı ve Algoritma tasarımı </li></ul></ul><ul><ul><li>Veritabanı tasarımı </li></ul></ul><ul><li>Yazılım Tasarım Mühendisi (Software Design Engineer) sorumluluğundadır </li></ul>
  • 6. Gerçekleştirim (Implementation) <ul><li>Tasarım  Bilgisayar programı </li></ul><ul><li>Kodlamanın yapıldığı süreç </li></ul><ul><li>Kodlama , önceki evrede kurulmuş olan algoritmanın C#, VB.NET, Java gibi bir dil aracılığıyla ifade edilmesidir. </li></ul><ul><li>Programcı (Programmer) sorumluluğundadır </li></ul>
  • 7. Bütünleştirme ve Hata Ayıklama / Test İşlemi ( Integration and Debugging / Testing ) <ul><li>Bileşenler sınama işleminden geçilerek bütünleştirilir. </li></ul><ul><li>Bütünleştirme işlemi bittikten sonra test işlemleri başlar. </li></ul><ul><li>Bileşen testi, bütünleştirme testi ve kullanıcı testi gibi test işlemleri yapılır. </li></ul><ul><li>Kullanıcı tarafındaki sınama işlemi Validation(Geçerleme) ve Verification(Doğrulama) olarak gerçekleştirilir. </li></ul><ul><li>Yazılım Test Mühendisi ( Software Test Engineer ) sorumluluğundadır. Aynı zamanda kullanıcı da önemli rol oynar. </li></ul><ul><li>Bu süreçte artık program kullanıcıya, müşteriye teslim edilmek üzere olmuştur. </li></ul>
  • 8. Kurulum ve Bakım (Operation and Maintenance) <ul><li>Programın kullanıcılara kurulması ve yazılımın yaşamını devam etmesi için gerekli bakımlar, güncellemeler yapılır. </li></ul><ul><li>Bu süreçte hatalar çıkabilir ve önceki adımlarda olduğu gibi düzenlemeler yapılabilir. </li></ul><ul><li>Evolution (Evrimleştirme) </li></ul>
  • 9. Yazılım Geliştirme Süreçleri <ul><li>Her süreç bitiminde doğrulama (verification) işlemi yapılır. </li></ul><ul><li>Amaç; sürecin doğru gerçekleşip gerçekleşmediğini netleştirmektir. </li></ul><ul><li>Ayrıca her süreçte o sürece ait belgelendirme nin yapılmış olması lazım. </li></ul><ul><li>Büyük bir yazılım projesini gerçekleştirmek için .NET veya Java bilmek yeterli olmaz. </li></ul><ul><li>Bilgisayar Destekli Yazılım Mühendisliği ( CASE -Computer Assisted Software Engineering) araçları </li></ul><ul><li>Analiz ve tasarım aşamasında IBM’in Rational Rose veya MS’nin Visio ürünü </li></ul>Analiz Tasarım Kodlama Sistem testi Bakım
  • 10. Veri Modelleme <ul><li>Günümüz uygulamalarının temelinde “ veri ” denilen sayısal veya mantıksal değerler mevcuttur. </li></ul><ul><li>Veritabanı sistemleri verileri mimari olarak mantıksal (table, view, procedure, user) ve fiziksel (dosya sistemi) olmak üzere iki seviyede sunar. </li></ul>
  • 11. Veri Modelleme <ul><li>Veritabanlarının amacı veri depolamak iken yazılımların amacı verileri bilgiye dönüştürmektir. </li></ul><ul><li>Veritabanına dayalı uygulamalar katmanlı mimari (multi-tier architecture) üzerine kurulur. Genellikle veri (data), iş (business logic) ve sunum (presentation) olmak üzere üç tür katmandan oluşur. </li></ul><ul><li>Çok katmanlı kurumsal uygulamaların ilk adımı veri modelleme işlemidir. </li></ul><ul><li>“ Veri modelleme, verileri mantıksal düzeyde düzenlemek için kullanılan kavramlar, yapılar ve işlemler bütünüdür. ” </li></ul><ul><li>Veri modeli kullanılarak veritabanının tasarım ve şemaları oluşturulur. </li></ul>
  • 12. Veri Modelleme <ul><li>Veri modelleme , veritabanı verilerinin ve bunların arasındaki ilişkinin organizasyon içindeki herkesin rahatlıkla anlayabileceği metin ve şekillerle ifade edilmesidir. </li></ul><ul><li>Organizasyon içindeki kullanıcı , tasarımcı ve programcı gibi teknik veya teknik olmayan kişilerin veriye bakış açıları ve veriyi tanımlamaları farklıdır. </li></ul><ul><li>Ortak dil; gerçek dünya varlık larıdır. </li></ul><ul><li>Veritabanı modellemenin üç türü vardır. </li></ul><ul><ul><li>Kavramsal tasarım (Conceptual design): Veritabanının hangi verileri içereceği ve bu veriler arasındaki ilişkilerin belirlendiği aşamadır. en çok kullanılan yöntem Varlık-İlişki (Entity-Relationship, ER) modelidir. </li></ul></ul><ul><ul><li>Mantıksal tasarım (Logical design): VTYS’nin tanımlandığı aşamadır. Kavramsal tasarımda modellenen yapı, karar verilmiş olan VTYS’ye uygun şemaya dönüştürülür. </li></ul></ul><ul><ul><li>Fiziksel tasarım (Physical design): Verilerin hangi disk veya başka fiziksel depolama sistemlerinde nasıl tutulacağı belirlenir. </li></ul></ul><ul><li>Kısaca, kavramsal ve mantıksal tasarım aşamasında, veritabanı şemasına karar verildiğini, fiziksel tasarım aşamasında da veritabanının fiziksel yapısına karar verildiğini söyleyebiliriz. </li></ul>
  • 13. Varlık-İlişki (Entity-Relationship, ER) modeli <ul><li>Kavramsal veri modelini herhangi bir VTYS şemasına bağlı kalmadan ana hatlarıyla ER diyagramı üzerinde şematik olarak gösterme tekniğidir. </li></ul><ul><li>ER diyagramları için farklı notasyonlar kullanılsa da en çok UML notasyonu tercih edilir. </li></ul>
  • 14. Varlık-İlişki (Entity-Relationship, ER) modeli <ul><li>ER modeli, teknik olarak varlıklar (entities) ve ilişkiler (relationships) koleksiyonundan oluşur </li></ul><ul><li>Varlık soyut veya somut olarak var olan ve benzerlerinden ayırt edilebilen herşeydir ( insanoğlu , araba , devlet …). </li></ul><ul><li>Nesne tabanlı programlamada sınıflar , veritabanı yönetim sisteminde de tablolar varlık kümesi olarak nitelendirilir. </li></ul><ul><li>Her varlık, kendisini diğer varlıklardan ayırt eden öznitelik olarak bilinen karakteristiklere sahiptir. </li></ul><ul><li>Örneğin bir e-ticaret projesinde “ Musteri ” bir varlık, onun “ AdSoyad ” bilgisi, bu varlığa ait bir nitelik olarak tanımlanabilir. “ AdSoyad ” bilgisinin “ Murat Şensoy ” olarak belirlenmesi bu niteliğin değeridir ( data value ). Özniteliğin alabileceği veya aldığı değerler etki alanı (domain) olarak tanımlanır. </li></ul><ul><li>ER diyagramında varlıklar dikdörtgen şeklinde, ilişkiler baklava biçiminde, öznitelikler oval şeklinde gösterilir. Varlık-İlişki çizelgeleri; </li></ul>Varlık Kümesi Nitelik İlişki Kümesi Zayıf Varlık Kümesi Anahtar Nitelik Türetilen Nitelik Bağımlı Varlık Kümesi
  • 15. Varlık-İlişki (Entity-Relationship, ER) modeli <ul><li>VTYS’ler varlık kümesi ve onların arasındaki etkileşimden oluşur. Varlıklar arasındaki etkileşim varlık ilişkisi olarak tanımlanır. Varlıklar arasında üç tür ilişki kurulur: </li></ul><ul><ul><li>Birden çoğa ilişki (one-to-many relationship): Bir tablonun bir kaydına karşılık ikinci tabloda birden fazla kaydın olmasıdır. “ Siparis ” ve “ Musteri ” tabloları arasındaki ilişkidir. Bu ilişki 1:M ile temsil edilir. </li></ul></ul><ul><ul><li>Çoktan çoğa ilişki (many-to-many relationship): Bir tablonun birden fazla kaydı, diğer tablonun birden fazla kaydıyla ilişkilidir. M:N ile temsil edilen bu ilişki genellikle üçüncü bir tablo üzerinde oluşturulur. “ Ogrenci ” ve “ Kurs ” tabloları. </li></ul></ul><ul><ul><li>Birden bire ilişki (one-to-one relationship): Bir tablo ilişkisinden ziyade ikinci tablonun birinci tablonun uzantısı olmasıdır. “Müşteri” ve “Şifre” tabloları. </li></ul></ul>Many-to-Many 1-to-1 1-to Many Many-to-1
  • 16. Varlık-İlişki (Entity-Relationship, ER) modeli ETicaret isimli bir veritabanının örnek ER şeması ve tabloları; Fatura Müşteri Ödeme olur yapılır Düzen-lenir ürün Ürün Grubu olur kimlikNo tarih soyad adres telefon FaturaNo ad ad model özellik ödediği garantiSüre ürünNo stokMiktarı taksitNo Tarih birimFiyat miktar satışFiyat 1 n n m 1 n 1 n ürünGrubuNo marka
  • 17. Varlık-İlişki (Entity-Relationship, ER) modeli <ul><li>Tasarım aşamasında varlık ve onlara ait öznitelikler belirlendikten sonra varlıklar arasındaki ilişkiler belirlenir ve “varlık ilişki diyagramı” ( entity relationship diagramming ) çıkarılır. </li></ul><ul><li>ER diyagramı hazırlayabilmek için ERWin (CA), Visio (MS), Rational Rose (IBM), Power Designer (Sybase) gibi araçlar kullanılır. </li></ul><ul><li>Bu araçların en önemli özelliği ileriye mühendislik (forward engineer) ve geriye mühendislik (reverse engineer) yöntemlerini destekliyor olması ve farklı türden diyagramların çizilebiliyor olmasına imkân tanımasıdır. </li></ul>
  • 18. Varlık-İlişki (Entity-Relationship, ER) modeli <ul><li>MS Visio üzerinde ER diyagramı oluşturulması. MS Visio ile MS SQL Server arasındaki iletişim. İleriye Mühendislik ve Geriye Mühendislik </li></ul>
  • 19. Nesne-İlişki Haritalama ( Object-Relational Mapping - O/R Mapping ) <ul><li>Yazılım projelerinde programcıların en çok vakit ayırdığı alan hiç şüphesiz veritabanı işlemleridir. Bu işlemler verilerin saklanması , işlenmesi ve görüntülenmesi olmak üzere üç türde toplanır. </li></ul><ul><li>VTYS tarafında, tasarımcılar tarafından oluşturulmuş olan nesne modelini VTYS’de saklamak için aracı olarak ER modelini kullanıyoruz. Bu ek işlem, şu anki VTYS’lerin nesne yönelimli (Object Oriented) olmamasından kaynaklanmaktadır. </li></ul><ul><li>Aynı sorun kullanıcılarla veritabanı arasında iletişim sağlayacak veritabanı uygulamaları yazılırken de yaşanır. Nesne yönelimli bir programlama dili kullanıldığı zaman class, inheritance, property, method gibi OOP varlıkları VTYS tarafından desteklenmediği için iş katmanında OOP ve ilişkisel veritabanı özellikleri iç içe kullanılır. </li></ul><ul><li>Uygulamaların iş katmanındaki bu iş yükünü azaltmak amacıyla O/R Mapping isimli nesne-ilişki eşleştirme yöntemi kullanılır. </li></ul>
  • 20. Nesne-İlişki Haritalama ( Object-Relational Mapping - O/R Mapping ) <ul><li>İş katmanında veritabanı sorgulama işlemlerinde yoğun bir şekilde SQL dilinin kullanılıyor olması, uygulama kodlarının veritabanı şemasına bağlı kalması, uygulama geliştiricilerinin veritabanı tarafında çok zamanını almaktadır. </li></ul><ul><li>İş katmanında OOP tercih edildiği halde veriye nesnesel olmayan yöntemlerle erişilir. Tabloları, uygulama tarafında gerçek varlıkları temsil etmek için kullandığımız nesnelerle ifade edememekteyiz. </li></ul><ul><li>ORM yöntemi, OOP modeli ile ilişkisel veritabanı modeli arasında ilişki kurup ilişkisel veritabanındaki öğelerin, nesnelere nasıl karşılık geleceğini yönetir. Tabloları sınıflara (class) , satırları nesnelere (instance) , kolonları bu nesnelerin özniteliklerine (attribute) bağlar. </li></ul><ul><li>O/R Mapping yönteminde kullanılmak üzere birçok araç geliştirilmiştir; bunların en popüleri ilk olarak Java platformu için çıkarılmış ama daha sonra .NET sürümü de geliştirilmiş olan açık kaynak NHibernate ürünüdür. Bunun dışında başta LLBLGen ürünü olmak üzere .NET platformunda kullanılacak birçok &amp;quot;O/R Mapping&amp;quot; aracı bulunmaktadır. </li></ul>
  • 21. Nesne-İlişki Haritalama ( Object-Relational Mapping - O/R Mapping ) <ul><li>ORM yöntemini tercih ettiğimizde aşağıdaki gibi bir T-SQL cümlesi veya stored procedure yerine; </li></ul><ul><ul><li>UPDATE Musteri SET AdSoyad=&apos;Murat Şensoy‘ </li></ul></ul><ul><ul><li>WHERE MusteriId = 10 </li></ul></ul><ul><ul><li>aşağıdaki gibi bir kod yazmış olacağız. </li></ul></ul><ul><ul><li>Musteri.AdSoyad = &amp;quot;Murat Şensoy&amp;quot; </li></ul></ul><ul><ul><li>oRm.Save(Musteri) </li></ul></ul><ul><li>Görüldüğü gibi CRUD (create, read, update, delete) işlemlerini OOP kurallarına göre yazmış oluyoruz. Böylece iş katmanını kodlayan yazılımcının yöntem alışkanlığı bozulmamış olmaktadır. </li></ul><ul><li>O/R Mapping modelinin geliştirme sürecinde kolaylık sağlamasına karşılık çalışma zamanında klasik yöntemle kıyaslandığında performans konusunda yeterince iyi olduğunu söyleyemeyiz. Bunun nedenleri: </li></ul><ul><ul><li>ORM, uygulama mimarisine veri erişim isminde yeni bir katman ekler. </li></ul></ul><ul><ul><li>Veri katmanı, veritabanına doğrudan erişemez. </li></ul></ul><ul><ul><li>SQL dilinin kompleks sorgu oluşturma ve çözmedeki gücünden yararlanılmaz. </li></ul></ul><ul><ul><li>ORM, uygulamanın veritabanı bağımsız olmasını sağladığı için o anda kullanılan VTYS’nin yeteneklerinden yararlanılamaz. </li></ul></ul>
  • 22. ADO.NET Entity Framework <ul><li>Microsoft, ADO.NET 2.0 ile birlikte sunduğu ObjectSpaces (OS.Net) ürünüyle O/R Mapping çözümüne ilk adımını atmış oldu. ADO.NET 3.5 ile birlikte ObjectSpaces ürününü yeniden düzenleyerek bu bölümde işleyeceğimiz ADO.NET Entity Framework isimli eklentiyi geliştirerek O/R Mapping alanındaki adımlarını daha da belirginleştirdi. </li></ul><ul><li>ADO.NET Entity Framework’ün bir parçası olarak ER modelinin oluşturulması için Varlık Veri Modeli (Entity Data Model-EDM) isimli kavram sunulmaktadır. EDM veritabanı şemasını kavramsal ve mantıksal boyutta gösteren ve ilgili ORM haritasını oluşturan bir araçtır. EDM, varlıklarla ilgili şemayı XML belgelerinde (CSDL, SSDL, MSL) saklar. Bu üç dosya kavramsal ( conceptual ), mantıksal ( logical ) ve haritalama ( mapping ) modelleriyle ilgili bilgileri içerir. </li></ul>
  • 23. ADO.NET Entity Framework <ul><li>CSDL (Conceptual Schema Definition Language): Varlıkların ve onlara ait ilişkilerin tanımlandığı dosya olup uygulamanın çekirdek veri modelini teşkil eder. Uygulama katmanında varlıklar, CSDL şeması referans alınarak oluşturulur. </li></ul><ul><li>SSDL (Store Schema Definition Language): Veri kaynağı olarak kullanılacak veritabanına ait üst-veri (metadata) bilgisini içerir. Varlıklarla veri kaynağı arasındaki iletişimi kurar. </li></ul><ul><li>MSL (Mapping Specification Language): CSDL dosyasındaki varlıkları SSDL dosyasında belirtilmiş tablolarla eşleştirir. </li></ul>
  • 24. ADO.NET Entity Framework <ul><li>Entity Client, SQLClient ve OracleClient gibi ADO.NET’in bir yönetilebilir veri sağlayıcısı olup EDM tarafından tanımlanmış olan veriye erişmeyi sağlar. Diğer sağlayıcılar gibi bunun da EntityCommand, EntityConnection ve EntityTransaction bileşenleri bulunur. </li></ul><ul><li>Object Services bileşeni, veri nesneleri üzerinde CRUD ( Create, Read, Update, Delete ) işlemleri için gerekli sorguları oluşturur. Bu sorgulama servisi “ Entity SQL ” ve “ LINQ to Entities ” türü sorgulamaları destekler. </li></ul><ul><li>Entity SQL (eSQL) ismindeki sorgulama dili T-SQL dilinden türemiş olup EDM modelindeki varlıkları ve aralarındaki ilişkileri sorgulamak için kullanılır. LINQ to Entities bileşeni de LINQ teknolojisinin varlıkları sorgulamak için sunduğu bir sağlayıcıdır. </li></ul>
  • 25. LINQ Sorgulama Yöntemi (Language-Integrated Query/Dil ile bütünleşik sorgulama) <ul><li>.NET Framework 3.5 ve VS.NET 2008 ile birlikte ortaya çıkmış ve C# 3.0 dili tarafından da desteklenmektedir. </li></ul><ul><li>LINQ, dizi ve sıralanabilir sınıf (enumerable class) gibi CLR tabanlı nesneleri veya XML belge ve ilişkisel veritabanı gibi dış kaynaktaki veriler üzerinde SQL benzeri sorgulama yapılmasını sağlar. </li></ul><ul><li>En önemli özelliği bu sorgulama sürecini tamamen nesnesel ifadelerle yapabiliyor olmasıdır. </li></ul>
  • 26. LINQ Sorgulama Yöntemi (Language-Integrated Query/Dil ile bütünleşik sorgulama) <ul><li>LINQ sorgulamaları için kullanılabilecek operatörler : </li></ul><ul><li>Kısıtlama Operatörleri : Where </li></ul><ul><li>Seçme Operatörleri : Select, SelectMany </li></ul><ul><li>Bölümleme Operatörleri : Take, Skip, TakeWhile, SkipWhile </li></ul><ul><li>Birleştirme Operatörleri : Join, GroupJoin </li></ul><ul><li>Ulama/ekleme Operatörleri : Concat </li></ul><ul><li>Sıralama Operatörleri : OrderBy, OrderByDescending, ThenBy </li></ul><ul><li>ThenByDescending, Reverse </li></ul><ul><li>Gruplama Operatörleri : GroupBy </li></ul><ul><li>Küme Operatörleri : Distinct, Union, Intersect, Except </li></ul><ul><li>Dönüştürme Operatörleri : ToArray, ToList, ToDictionary, OfType </li></ul><ul><li>Eşitlik Operatörleri : SequenceEqual </li></ul><ul><li>Eleman Operatörleri : DefaultIfEmpty, ElementAt, ElementAtOrDefault First, FirstOrDefault, Last, LastOrDefault, Single, SingleOrDefault </li></ul><ul><li>Üretim Operatörleri : Empty, Range, Repeat </li></ul><ul><li>Ölçüm Operatörleri : Any, All </li></ul><ul><li>Gruplama Fonksiyonu Operatörleri : Aggregate, Count, LongCount, Sum, Min Max, Average </li></ul>
  • 27. LINQ ile ilgili 2 Örnek
  • 28. DLINQ <ul><li>DLINQ kavramı, ilişkisel veritabanındaki öğeleri nesnesel ifadelerle sorgulamayı temsil eder. Bir uygulama içerisinde bu tür sorgulamaları yapabilmek için öncelikle veritabanı üyelerini o uygulama içerisinde temsil edecek varlıkların oluşturulması gerekir. O/R Mapping konusundan hatırlanacağı gibi uygulamada veri erişim katmanı (Data Access Layer-DAL) oluşturulur ve veritabanı öğelerini simgeleyecek varlık sınıfları (entity classes) bu katmanda yazılır. Uygulamadaki diğer katmanlar, veritabanına doğrudan erişmek yerine bu erişim katmanını kullanır. </li></ul>
  • 29. DLINQ <ul><li>.NET Framework’te varlık sınıflarını otomatik oluşturmak için iki araç kullanılır. </li></ul><ul><li>Code Generation Tool ( SqlMetal.exe ) </li></ul><ul><ul><li>C:Program FilesMicrosoft SDKsWindowsvn.nnBin </li></ul></ul><ul><ul><li>SqlMetal /server:localhost /database:Ornek /code:C:Ornek.cs </li></ul></ul><ul><ul><ul><li>Oluşan cs dosyasının class diagramına bakılabilir. </li></ul></ul></ul><ul><ul><li>System.Data.Linq.dll kütüphanesi ref edilmeli </li></ul></ul><ul><ul><li>/dbml [:file]: Çıktıyı .dbml olarak üretir. /map seçeneğiyle birlikte kullanılamaz. </li></ul></ul><ul><ul><li>/code [:file]: Çıktıyı kaynak kod olarak üretir. /dbml seçeneğiyle birlikte kullanılamaz. </li></ul></ul><ul><ul><li>/map [:file]: Çıktıyı XML kod-şablonu olarak üretir. /code seçeneğiyle birlikte kullanılması gerekir. </li></ul></ul><ul><ul><li>sqlmetal /namespace:LinqProje /code:Ornek.cs /language:csharp Ornek.dbml </li></ul></ul><ul><li>VS.NET içindeki Object Relational Designer aracı ( O/R Designer ) </li></ul>
  • 30. SONUÇ <ul><li>Basit yazılımlar için hangi yöntemi hangi modeli kullandığınız önemli olmasa da büyük ölçekli uygulamalarda etkin bir süreç modelini takip etmek, CASE araçlarını kullanmak, ORM yöntemini tercih etmek hem maliyetleri azaltacak hem de proje içerisinde teknik veya teknik olmayan kişilerin yönetimini güçlendirecek ve test / belgelendirme/ bakım süreçlerini kolaylaştıracaktır. </li></ul><ul><li>Yazılım mühendisi misiniz yoksa sadece bir kod yazıcısı mısınız ? </li></ul><ul><li>ORM vazgeçilmez bir yöntem değildir. </li></ul><ul><li>Eğer ORM tercih edilecekse ucu açık bir yöntem olduğu için sınırların netleştirilmesi ve performans paradoxunun gözönünde bulundurulması gerekir. </li></ul><ul><li>Microsoft, ORM konusunda geç kaldı fakat Entity Framework ile birlkte ORM dünyasına sağlam adım attı. </li></ul><ul><li>“ LINQ to SQL”in geleceği bulanık olması ORM’ye gölge düşürmez. Onun sadece SQL Server’e destek vermesi bir sıkıntı olduğu için bunun veri kaynağından bağımsız bir bileşen haline getirilmesini ümit ediyorum. </li></ul><ul><li>Bu kavramlardan sonra LINQ ile ilgili detaylı bir oturum yapmak faydalı olacaktır. </li></ul>
  • 31. KAYNAKÇA <ul><li>http://msdn.microsoft.com/en-us/library/bb399572.aspx </li></ul><ul><li>http ://weblogs.asp.net/scottgu/ </li></ul><ul><li>http:// en.wikipedia.org/wiki/Object-relational_mapping </li></ul><ul><li>http:// www.bilmuh.gyte.edu.tr/BIL314 </li></ul><ul><li>T.Halpin, Information Modeling and Relational Databases, Morgan Kaufmann Publishers, 2001. </li></ul>
  • 32. Teşekkürler . . . SORULAR ? ? ? akaymaz @ ahmetkaymaz.com http://www. ahmetkaymaz.co m Kitaplarımla ilgili eleştirilerinizi bekliyorum. <ul><li>C# Programlama Dili ve Yazılım Tasarımı / Programlama İlkeleri </li></ul><ul><li>C# Programlama Dili ve Yazılım Tasarımı / İleri Düzey Programlama </li></ul>

×