ahmet kaymaz ceturk etkinlik 7 subat yazilim surecleri

32
http://www.ahmetkaymaz.com Yeni Nesil Veri Erişim: ADO.NET Entity Framework (E/R Model, ORM, LINQ . . .) Ahmet Kaymaz [email protected] http://www.ahmetkaymaz.com

Upload: akaymaz

Post on 13-Dec-2014

8.430 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Yeni Nesil Veri Erişim:ADO.NET Entity Framework(E/R Model, ORM, LINQ . . .)

Ahmet [email protected] http://www.ahmetkaymaz.com

Page 2: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Ajanda

Yazılım geliştirme süreçleri (Şelale Modeli)

Veri Modelleme

Varlık-İlişki (Entity-Relationship, ER) Modeli

Nesne-İlişki Haritalama (Object-Relational Mapping - ORM)

ADO.NET Entity Framework

LINQ giriş

Page 3: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Yazılım Geliştirme Süreçleri

Analiz

Tasarım

Kodlama

Sistem testi

Bakım

Şelale Modeli(Waterfall Model)

Yazılım yaşam döngüsü. . .

girdi

çıktı

Page 4: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Çözümleme ve Gereksinimlerin Tanımlanması (Analysis & Requirements Specification)

Gereksinim, gerçekleştirilmesi istenilen ihtiyaçların tanımlanmasıdır. Gereksinimler bir yazılımın temel kaynağını oluşturur. 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.

Kavramsal modelin oluşturulması. Sistem gereksinimi, Kullanıcı gereksinimi Gereksinimler tam ve net bir şekilde ifade edilmelidir. Gereksinim Mühendisliği (Requirements Engineering) sorumluluğundadır.

Page 5: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Yazılım ve Sistem Tasarımı (Software & System Design)

Gereksinimler listesi referans alınarak yazılımın mimari tasarımı oluşturulur.

Bu evrede alt sistemler ve aralarındaki ilişkiler belirlenir ve onlara ait ara-yüzlerin nasıl olacağı tasarlanır.

Gereksinimler uygulamanın neler yapabileceğini tanımlarken Tasarım uygulamanın bunu nasıl yapacağını ifade eder.

Tasarım sürecinde aşağıdaki aktiviteler gerçekleştirilir; Mimari tasarım Bileşen ve Kullanıcı Ara yüz tasarımı Veri yapısı ve Algoritma tasarımı Veritabanı tasarımı

Yazılım Tasarım Mühendisi (Software Design Engineer) sorumluluğundadır

Page 6: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Gerçekleştirim (Implementation)

Tasarım Bilgisayar programı Kodlamanın yapıldığı süreç Kodlama, önceki evrede kurulmuş olan algoritmanın C#, VB.NET, Java gibi

bir dil aracılığıyla ifade edilmesidir. Programcı (Programmer) sorumluluğundadır

Page 7: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Bütünleştirme ve Hata Ayıklama / Test İşlemi (Integration and Debugging / Testing)

Bileşenler sınama işleminden geçilerek bütünleştirilir. Bütünleştirme işlemi bittikten sonra test işlemleri başlar. Bileşen testi, bütünleştirme testi ve kullanıcı testi gibi test işlemleri yapılır. Kullanıcı tarafındaki sınama işlemi Validation(Geçerleme) ve

Verification(Doğrulama) olarak gerçekleştirilir. Yazılım Test Mühendisi (Software Test Engineer) sorumluluğundadır. Aynı

zamanda kullanıcı da önemli rol oynar. Bu süreçte artık program kullanıcıya, müşteriye teslim edilmek üzere

olmuştur.

Page 8: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Kurulum ve Bakım(Operation and Maintenance)

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.

Bu süreçte hatalar çıkabilir ve önceki adımlarda olduğu gibi düzenlemeler yapılabilir.

Evolution (Evrimleştirme)

Page 9: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Yazılım Geliştirme SüreçleriAnaliz

Tasarım

Kodlama

Sistem testi

Bakım

•Her süreç bitiminde doğrulama (verification) işlemi yapılır. Amaç; sürecin doğru gerçekleşip gerçekleşmediğini netleştirmektir.

•Ayrıca her süreçte o sürece ait belgelendirmenin yapılmış olması lazım. •Büyük bir yazılım projesini gerçekleştirmek için .NET veya Java bilmek yeterli olmaz.•Bilgisayar Destekli Yazılım Mühendisliği (CASE-Computer Assisted Software Engineering) araçları •Analiz ve tasarım aşamasında IBM’in Rational Rose veya MS’nin Visio ürünü

Page 10: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Veri Modelleme

Günümüz uygulamalarının temelinde “veri” denilen sayısal veya mantıksal değerler mevcuttur.

Veritabanı sistemleri verileri mimari olarak mantıksal (table, view, procedure, user) ve fiziksel (dosya sistemi) olmak üzere iki seviyede sunar.

Page 11: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Veri Modelleme

Veritabanlarının amacı veri depolamak iken yazılımların amacı verileri bilgiye dönüştürmektir.

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.

Çok katmanlı kurumsal uygulamaların ilk adımı veri modelleme işlemidir. “Veri modelleme, verileri mantıksal düzeyde düzenlemek için kullanılan

kavramlar, yapılar ve işlemler bütünüdür.” Veri modeli kullanılarak veritabanının tasarım ve şemaları oluşturulur.

Page 12: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Veri Modelleme Veri modelleme, veritabanı verilerinin ve bunların arasındaki ilişkinin organizasyon içindeki herkesin rahatlıkla anlayabileceği metin ve

şekillerle ifade edilmesidir. 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. Ortak dil; gerçek dünya varlıklarıdır. Veritabanı modellemenin üç türü vardır.

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.

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.

Fiziksel tasarım (Physical design): Verilerin hangi disk veya başka fiziksel depolama sistemlerinde nasıl tutulacağı belirlenir. 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.

Page 13: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Varlık-İlişki (Entity-Relationship, ER) modeli

Kavramsal veri modelini herhangi bir VTYS şemasına bağlı kalmadan ana hatlarıyla ER diyagramı üzerinde şematik olarak gösterme tekniğidir.

ER diyagramları için farklı notasyonlar kullanılsa da en çok UML notasyonu tercih edilir.

Page 14: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Varlık-İlişki (Entity-Relationship, ER) modeli ER modeli, teknik olarak varlıklar (entities) ve ilişkiler (relationships) koleksiyonundan oluşur Varlık soyut veya somut olarak var olan ve benzerlerinden ayırt edilebilen herşeydir (insanoğlu, araba, devlet

…). Nesne tabanlı programlamada sınıflar, veritabanı yönetim sisteminde de tablolar varlık kümesi olarak

nitelendirilir. Her varlık, kendisini diğer varlıklardan ayırt eden öznitelik olarak bilinen karakteristiklere sahiptir. Ö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.

ER diyagramında varlıklar dikdörtgen şeklinde, ilişkiler baklava biçiminde, öznitelikler oval şeklinde gösterilir. Varlık-İlişki çizelgeleri;

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

Page 15: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Varlık-İlişki (Entity-Relationship, ER) modeli 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: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.

Ç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ı.

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ı.

Many-to-Many1-to-1 1-to Many Many-to-1

Page 16: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Varlık-İlişki (Entity-Relationship, ER) modeli

ETicaret isimli bir veritabanının örnek ER şeması ve tabloları;

FaturaMüşteri

Ödeme

olur

yapılır

Düzen-lenir ürün

Ürün Grubu

olur

kimlikNotarih

soyad

adres telefon

FaturaNoad

ad

model

özellik

ödediği

garantiSüre

ürünNo

stokMiktarı

taksitNo

Tarih

birimFiyat

miktar

satışFiyat

1 n nm

1

n

1

n

ürünGrubuNo

marka

Page 17: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Varlık-İlişki (Entity-Relationship, ER) modeli

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.

ER diyagramı hazırlayabilmek için ERWin (CA), Visio (MS), Rational Rose (IBM), Power Designer (Sybase) gibi araçlar kullanılır.

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.

Page 18: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Varlık-İlişki (Entity-Relationship, ER) modeli

•MS Visio üzerinde ER diyagramı oluşturulması.MS Visio ile MS SQL Server arasındaki iletişim.İleriye Mühendislik ve Geriye Mühendislik

Page 19: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Nesne-İlişki Haritalama(Object-Relational Mapping - O/R Mapping) 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. 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.

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.

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.

Page 20: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Nesne-İlişki Haritalama(Object-Relational Mapping - O/R Mapping)

İş 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.

İş 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.

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.

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 "O/R Mapping" aracı bulunmaktadır.

Page 21: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Nesne-İlişki Haritalama(Object-Relational Mapping - O/R Mapping)

ORM yöntemini tercih ettiğimizde aşağıdaki gibi bir T-SQL cümlesi veya stored procedure yerine;

UPDATE Musteri SET AdSoyad='Murat Şensoy‘

WHERE MusteriId = 10

aşağıdaki gibi bir kod yazmış olacağız.

Musteri.AdSoyad = "Murat Şensoy"

oRm.Save(Musteri)

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.

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:

ORM, uygulama mimarisine veri erişim isminde yeni bir katman ekler.

Veri katmanı, veritabanına doğrudan erişemez.

SQL dilinin kompleks sorgu oluşturma ve çözmedeki gücünden yararlanılmaz.

ORM, uygulamanın veritabanı bağımsız olmasını sağladığı için o anda kullanılan VTYS’nin yeteneklerinden yararlanılamaz.

Page 22: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

ADO.NET Entity Framework

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.

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.

Page 23: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

ADO.NET Entity FrameworkCSDL (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.

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.

MSL (Mapping Specification Language): CSDL dosyasındaki varlıkları SSDL dosyasında belirtilmiş tablolarla eşleştirir.

Page 24: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

ADO.NET Entity Framework

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.

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.

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.

Page 25: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

LINQ Sorgulama Yöntemi(Language-Integrated Query/Dil ile bütünleşik sorgulama)

.NET Framework 3.5 ve VS.NET 2008 ile birlikte ortaya çıkmış ve C# 3.0 dili tarafından da desteklenmektedir.

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.

En önemli özelliği bu sorgulama sürecini tamamen nesnesel ifadelerle yapabiliyor olmasıdır.

Page 26: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

LINQ Sorgulama Yöntemi(Language-Integrated Query/Dil ile bütünleşik sorgulama)

LINQ sorgulamaları için kullanılabilecek operatörler :

Kısıtlama Operatörleri : Where

Seçme Operatörleri : Select, SelectMany

Bölümleme Operatörleri : Take, Skip, TakeWhile, SkipWhile

Birleştirme Operatörleri : Join, GroupJoin

Ulama/ekleme Operatörleri : Concat

Sıralama Operatörleri : OrderBy, OrderByDescending, ThenBy

ThenByDescending, Reverse

Gruplama Operatörleri : GroupBy

Küme Operatörleri : Distinct, Union, Intersect, Except

Dönüştürme Operatörleri : ToArray, ToList, ToDictionary, OfType

Eşitlik Operatörleri : SequenceEqual

Eleman Operatörleri : DefaultIfEmpty, ElementAt, ElementAtOrDefault First, FirstOrDefault, Last, LastOrDefault, Single, SingleOrDefault

Üretim Operatörleri : Empty, Range, Repeat

Ölçüm Operatörleri : Any, All

Gruplama Fonksiyonu Operatörleri : Aggregate, Count, LongCount, Sum, Min Max, Average

Page 27: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

LINQ ile ilgili 2 Örnek

Page 28: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

DLINQ

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.

Page 29: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

DLINQ

.NET Framework’te varlık sınıflarını otomatik oluşturmak için iki araç kullanılır.

Code Generation Tool (SqlMetal.exe)

C:\Program Files\Microsoft SDKs\Windows\vn.nn\Bin SqlMetal /server:localhost /database:Ornek /code:C:\Ornek.cs

Oluşan cs dosyasının class diagramına bakılabilir.

System.Data.Linq.dll kütüphanesi ref edilmeli/dbml [:file]: Çıktıyı .dbml olarak üretir. /map seçeneğiyle birlikte kullanılamaz.

/code [:file]: Çıktıyı kaynak kod olarak üretir. /dbml seçeneğiyle birlikte kullanılamaz.

/map [:file]: Çıktıyı XML kod-şablonu olarak üretir. /code seçeneğiyle birlikte kullanılması gerekir.

sqlmetal /namespace:LinqProje /code:Ornek.cs /language:csharp Ornek.dbml VS.NET içindeki Object Relational Designer aracı (O/R Designer)

Page 30: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

SONUÇSONUÇ

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.

Yazılım mühendisi misiniz yoksa sadece bir kod yazıcısı mısınız ?

ORM vazgeçilmez bir yöntem değildir.

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.

Microsoft, ORM konusunda geç kaldı fakat Entity Framework ile birlkte ORM dünyasına sağlam adım attı.

“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.

Bu kavramlardan sonra LINQ ile ilgili detaylı bir oturum yapmak faydalı olacaktır.

Page 31: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

KAYNAKÇAKAYNAKÇA

http://msdn.microsoft.com/en-us/library/bb399572.aspxhttp://weblogs.asp.net/scottgu/http://en.wikipedia.org/wiki/Object-relational_mappinghttp://www.bilmuh.gyte.edu.tr/BIL314T.Halpin, Information Modeling and Relational Databases, Morgan Kaufmann Publishers, 2001.

Page 32: Ahmet Kaymaz Ceturk Etkinlik 7 Subat Yazilim Surecleri

http://www.ahmetkaymaz.com

Teşekkürler . . . SORULAR ? ? ?

[email protected] http://www.ahmetkaymaz.com

Kitaplarımla ilgili eleştirilerinizi bekliyorum.

C# Programlama Dili ve Yazılım Tasarımı / Programlama İlkeleriC# Programlama Dili ve Yazılım Tasarımı / İleri Düzey Programlama