WTK290U-İNTERNET TABANLI PROGRAMLAMA
Ünite 6: ASP:NET ile Dinamik Web Kodlama
Giriş
ASP.NET ise bu platformun bir parçasıdır ve web uygulamaları geliştirmek için kullanılmaktadır. Sunucu yazılımı olan Internet Information Server (IIS) üzerinde çalıştırılmaktadır. ASP.NET uygulamaları bir sunucu üzerinde çalıştırılmakta ve bu uygulamanın ürettiği web sayfaları (HTML, CSS ve JavaScript) istemcilere (internet tarayıcılarına) sunulmaktadır.
ASP.NET
ASP.NET, .NET Framework yapısı altında bulunan ve Microsoft firmasının sunucu temelli uygulama geliştirme çözümüdür. .NET Framework; işletim sistemi ve donanım ile çalışan yazılım arasında bir ara katman olarak devreye girmektedir. Ara katman olarak çalışan yapıya .NET Framework’in bir parçası olan Common Language Runtime (CLR) adı verilmektedir. .NET ile geliştirilmiş bir yazılımın çalışabilmesi için o sistemde mutlaka .NET Framework’ün kurulu olması gerekir. Bu bakımdan Java Runtime Environment (JRE) ile benzer bir çalışma mantığına sahip olduğu söylenebilir.
Tüm .NET dilleri sonuçta aynı yapıya dönüştüğü (Intermediate Language-Ara Dil (IL)) için managed code adlı ortak bir yapıya sahiptirler. Visual C++ gibi diller ile managed code harici ve .NET CLR ile çalışmayan yazılımlar da geliştirilebilmektedir. Derleme işleminden sonra IL olarak oluşturulan kodlar paketlenerek bir DLL veya EXE dosyasına dönüştürülmektedir. Derlenmiş EXE veya DLL dosyalarının çalıştırılmasında ise CLR devreye girmektedir. Dosya ilk kez çalıştırıldığında kodlar paketten çıkartılarak CLR’nin Just In Time (JIT) derleyicisi tarafından tekrar derlenir ve bulunduğu sistemin makine diline dönüştürülür. C#, Visual Basic .NET, Managed Visual C++, Delphi .NET, J# gibi diller ile .NET Framework için yazılım geliştirilebilmektedir.
Açık kaynak kodlu mono projesi ile .NET uygulamalarının Linux ve macOS işletim sistemleri ile de çalışabilmesi sağlanmıştır.
Günümüzde ise Microsoft, .NET Core isminde .NET Framework’ün çekirdeği olarak değerlendirilebilecek bir sürümü açık kaynak kodlu olarak yayınlamaktadır. Aynı zamanda .NET Core resmi olarak Linux, macOS ve Windows işletim sistemlerini desteklemektedir.
ASP.NET Core ile şimdilik sadece web uygulaması geliştirilebilmektedir. Web servis (WPF) uygulamaları geliştirmek mümkün değildir. Ayrıca ASP.NET Core, CoreFX sınıf kütüphanesini kullanmakta ve CoreCLR ismindeki .NET Core’un çalışma ortamı üzerinde çalışmaktadır. Ayrıca mobil işletim sistemleri olan iOS ve Android işletim sistemlerine yönelik olarak Xamarin isminde NET Framework’ün bir sürümü daha bulunmaktadır.
Kurulum
ASP.NET uygulamaları genellikle bir sunucu işletim sistemi olan Microsoft Windows Server kurulu bir sunucu bilgisayar üzerinden yayınlanmaktadır. ASP.NET uygulamalarını çalıştırabilmek, test edebilmek veya yayınlayabilmek için öncellikle işletim sistemi üzerinde IIS yazılımının çalışıyor olması gerekmektedir. Microsoft Windows 10 işletim sisteminde IIS’i kurmak, çalıştırmak ve ayar yapmak için Denetim Masası, Windows özellikleri, Yönetimsel Araçlar, Internet Information Services (IIS) Yöneticisi pencereleri kullanılabilir.
ASP.NET ile birçok veri tabanı sunucu yazılımına bağlantı kurmak mümkündür. ASP.NET ile veri tabanı sunucusu olarak çoğunlukla Microsoft SQL Server sunucu yazılımı tercih edildiği görülür. Ayrıca veri tabanını yönetmek için SQL Server Management Studio yazılımı kullanılabilir.
ASP.NET uygulamalarını geliştirmede kullanmak üzere Microsoft Visual Studio bütünleşik geliştirme ortamına ihtiyaç vardır. Visual Studio; geliştiricilere kod tamamlama, web sayfalarını kod yazmadan görsel araçlar kullanarak oluşturma gibi çok sayıda araç sunmakta, yazılım geliştirme sürecini kolaylaştırmakta ve hızlandırmaktadır. Bu bakımdan ASP. NET uygulamaları geliştirmek için Visual Studio kullanmak uygun olacaktır.
C# Programlama Dili
C# ile masaüstü uygulamaları, web uygulamaları, mobil uygulamalar, web servis (WCF) uygulamaları gibi çok çeşitli türden uygulama geliştirmek mümkündür. C# ile yazılan kodların çalıştırılabilmesi için öncelikle derleyici tarafından derlenmesi gerekmektedir.
C# dili büyük küçük harfe duyarlıdır. C# programlama dilinin tüm bu özellikleri için C# programlama dilinin çevrimiçi kılavuzundan yararlanılabilir. C# Programlama Dili Kılavuzu:
https://msdn.microsoft.com/en-us/library/kx37x362.aspx
Yazılacak örnek uygulamaları denemek için konsol uygulaması oluşturulabilir. Konsol uygulaması ile ilgili kitabınız sayfa 177’den itibaren verilen kodlar ve açıklamalarını incelemek faydalı olacaktır.
Açıklama eklemek için diğer benzer programlama dillerinde olduğu gibi // veya /* */ karakterlerinden yararlanılır.
Değişkenler ve Türler
C# programlama dilinde değişkenlerin mutlaka kullanılmadan önce tanımlanmış olması gerekir. Ayrıca değişkenler tanımlanırken türlerinin belirtilmesi gerekir. C# değişkenler konusunda katı kurallara sahip bir dildir. C# ile basit türler ve karmaşık türler olmak üzere iki farklı tür yapısından söz edilebilir. Basit türler sayısal değerler, karakter ve alfa numerik (sayı ve harflerden oluşan karakter dizisi, metin) değerleri tutan değişken türleridir. Basit türler System isim uzayının içinde yer almaktadır. Karmaşık türler ise struct, class, interface veya enum yapıları ile
oluşturulmuş özel türlerdir. .NET platformu içinde çok sayıda sınıfı, bir başka değişle karmaşık türü barındırmaktadır. Basit türler ve açıklamaları Kitabınız sayfa 178’de Tablo 6.1’de verilmiştir.
Değişken tanımlarken önce türü, daha sonra değişken ismi belirtilmelidir. Değişken isimlerinde harf, sayı ve _ işareti yer alabilir. Değişken isimleri sayı ile başlamamalıdır. Değişken isimlerinde boşluk ve özel karakterler(?,!,],&,...) yer alamaz. Ayrıca C# dilinde kullanılan if, for, while, switch gibi anahtar kelimeler de değişken ismi olarak kullanılamaz. Değişkene tanımlandığı yerde ilk değer ataması yapılabilir. Değişken tanımlarken kısa adı veya .NET tam yolu kullanılabilir.
U (unsigned-işaretsiz) ile başlayan türler sadece pozitif tam sayıları barındırabilmektedirler. Genellikle değişken tanımlama işlemi kodlama bloğunun en üstünde yapılmaktadır. Değerlere de tür tanımlaması yapılabilmektedir.
Char türü değerler tek tırnak için de belirtilmelidir. String türü değerler ise çift tırnak içinde belirtilmelidir. Özel anlamı olan bazı karakterleri yazdırmak için kitabınız sayfa 180’deki Tablo 6.2’deki kaçış karakterleri veya Unicode karakterleri kullanılmalıdır. Unicode karakterleri kullanmak için \u ifadesinin yanına 4 karakterlik Unicode hexadecimal (onaltılık taban) değer yazılmalıdır. Konunun daha iyi anlaşılması için lütfen Kitabınız sayfa 180’de verilen örneği ve açıklamasını inceleyiniz.
Tür Dönüşümleri
Önceki bölümde de belirtildiği üzere değişken türlerinin kendilerine has özellikleri ve kapasiteleri mevcuttur. Türlerin hafızada işgal ettikleri alan farklılık gösterebilmektedir. Güvenli olan tür dönüşümleri doğrudan kullanılabilir. Derleyici hatası oluşmaz. Güvenli tür dönüşümleri kitabınız sayfa 181’de yer alan Tablo 6.3’de verilmiştir.Güvenli olmayan tür dönüşümleri doğrudan yapılamaz, yapılmak istenirse derleyici hatası oluşacaktır. Bu tür dönüşümlerde cast işlemi uygulanmalıdır.
Değişkenlerin değerleri konusunda emin olunamadığı durumlarda, tür dönüşümü sırasında veri kaybı oluşmuş ise programın çalışmayı sonlandırarak hata üretmesi istenebilir. Bu durumda checked fonksiyonundan yararlanmak gerekir. Güvensiz tür dönüşümü yapmak için System.Convert sınıfından da yararlanılabilir. Bu sınıfı kullanarak tüm temel türlere dönüşüm gerçekleştirmek mümkündür. Tür dönüşümlerinde kullanılan cast yöntemi karmaşık türlerde de kullanılabilmektedir. Burada dikkat edilmesi gereken nokta dönüştürülecek değerin hedef tür ile uyumlu olmasıdır.
Diziler
C# ile birçok değeri içinde barındırabilen diziler tanımlanabilir. C# ile tanımlanan dizilerin boyutları sabittir. Anahtar (indis) olarak sadece tamsayı kullanılabilmektedir. Tüm dizi elemanları tek bir türde olmak zorundadır. Dizi
anahtarları 0’dan başlamaktadır. Bir başka deyişle dizinin ilk elemanının anahtarı 0’dır.
Dizi tanımlanırken hangi türde bir dizi olacağı belirlenmelidir. int[], string[] ya da double [] ifadeleri gibi ifadelerle tanımlanmaktadır. Dizi kullanılmadan önce mutlaka new kelimesi ile veya {} kullanılarak kaç elemanlı olacağı belirlenmelidir. Küme parantezleri ile dizinin hem kaç elemanlı olduğu belirlenmekte hem de ilk değer ataması yapılmaktadır. Tanımlanan dizilerin boyutları daha sonradan değiştirilemez. Ancak farklı boyutlu yeni bir dizi oluşturulabilir. Dizilerin boyutlarını öğrenmek için Length özelliğinden yararlanılabilir. C# ile çok boyutlu diziler de oluşturmak mümkündür.
Çok boyutlu dizi tanımlarken int[,] yapısı ile dizinin kaç boyutlu olacağı belirtilmelidir. Bir virgül olursa iki boyutlu, iki virgül olursa üç boyutlu bir dizi olacaktır. Bir başka deyişle boyut sayısı, virgül sayısının bir fazlasıdır. Dizi tanımlandıktan sonra dizinin büyüklüğü new veya {} ile belirlenmelidir.
ArrayList
C# programlama dilinde kullanılan diziler C# programlama dilinin doğası gereği esnek bir yapıda değildir. Daha esnek bir yapıya ihtiyaç duyulması durumunda dizilerden daha esnek bir yapı sunan System. Collections isim uzayı içindeki sınıflardan yararlanılmaktadır. Örneğin dizilerde dizi büyüklüğünün sabit olması gerekmektedir. Ancak birçok durumda dizi boyutunun (örneğin veritabanından alınacak bilgiler doğrultusunda) büyüyüp küçülebilen bir yapıda olması istenebilir. Bu durumda System.Collections isim uzayı içindeki ArrayList sınıfından yararlanılabilir. ArrayList sınıfı ile oluşturulacak dizi benzeri yapıya farklı türde değerlerler eklenebilir. ArrayList’e yeni değer eklemek ve eski değerleri silmek mümkündür. Ayrıca ArrayList sınıfı diziler ile ilgili yapılabilecek sıralama, karıştırma gibi birçok işlevsellikte sunmaktadır.
ArrayList’e yeni eleman eklemek için Add fonksiyonundan yararlanılır. Herhangi bir türde yeni eleman eklemek mümkündür. Basit türler için ArrayList elemanları değiştirilebilir. Ancak ArrayList dizisi içindeki karmaşık türe sahip elemanlar kullanılmak istenir ise öncelikle cast (tür dönüştürme) işlemi yapmak gerekir, çünkü ArrayList dizisi içindeki tüm elemanlar aslında Object türüne dönüştürülmektedirler. Object türü ise tüm türlerin atasıdır. ArayList dizisinden eleman silmek için kullanılabilecek fonksiyonlardan biri RemoveAt fonksiyonudur. RemoveAt fonksiyonu ile anahtar numarası verilen dizi elemanı silinir.
Operatörler
C# programlama dilinde matematiksel, atama ve karşılaştırma işlemlerini yapmak için operatörler kullanılmaktadır. C# programlama dilinde kullanılabilecek operatörlerin bir kısmı kitabınız sayfa 183 ve 184’de yer alan Tablo 6.4’te verilmiştir.
If
if ifadesi ile bir kod bloğunun belirlenen koşullara bağlı olarak çalıştırılıp çalıştırılmayacağı belirlenir. if ile belirtilen koşulun sağlanamaması durumunda çalıştırılmak istenen komutlar var ise if bloğundan sonra else bloğu kullanılmalıdır. Birbiriyle bağlantılı çok sayıda karşılaştırma ifadelerinin kullanılması durumunda ise else if yapısı kullanılmaktadır.
if else if bloğunda kullanılan karşılaştırma ifadeleri birbiri ile ilişkilidir. if else if yapısı kullanıldığında karşılaştırma ifadeleri sırayla kontrol edilir. Doğru sonucunu üreten karşılaştırma ifadesinin bloğu çalıştırılır ve tüm else if yapısından çıkılır.
For
For döngüsü, bloğunun içine yazılan kodlar koşul ile belirtilen sayıda tekrar tekrar çalıştırılır. For döngüsüne ilk girildiğinde i değişkeni tanımlanır ve 0 değeri atanır. Daha sonra karşılaştırma ifadesi ile kontrolü gerçekleştirilir. Bu kontrol sonucu doğru olduğu için for döngüsü içindeki kodlar çalıştırılır. İkinci döngü adımında i++ ifadesi çalıştırılarak i’nin değeri 1 arttırılır. Tekrar kontrolü yapılır ve kontrol yanlış olasıya kadar döngü içindeki kodlar tekrar çalıştır.
Karşılaştırma ifadesinin her zaman doğru sonucunu üretmesi durumunda sonsuz döngüye girilmiş olur. Bu durum programın tüm işlemci gücünü kullanmasına ve yanıt vermemesine neden olabilir, çünkü program akışı döngü içinde dönmeye ve döngü bloğu komutlarını çalıştırmaya devam etmektedir.
While
While döngüsünün For döngüsü ile benzer bir çalışma mantığı vardır. Karşılaştırma ifadesinin sonucu doğru ise döngü içindeki komutlar çalıştırılır, yanlış ise döngüden çıkılır.
Do While
Do while döngüsü while döngüsüne benzer bir mantık ile çalışmaktadır. While döngüsünde olduğu gibi karşılaştırma ifadesinin doğru olması durumunda döngü bloğu içindeki komutlar çalıştırılır. While döngüsünden farkı ise döngüye ilk girildiğinde önce döngü bloğu içindeki kodlar çalıştırılır, daha sonra karşılaştırma ifadesi ile kontrol gerçekleştirilir. Bu durumda döngü içindeki kodlar en az bir defa mutlaka çalıştırılmış olur.
Foreach
Foreach döngüsü ile dizi elemanları veya System.Collections’da tanımlanmış dizi amaçlı kullanılan ArrayList gibi sınıfların elemanları içinde gezinmek için kullanılır. For, while, do while ve foreach döngü oluşturmak için kullanılan benzer yapılardır. Aynı döngü farklı döngü yapıları kullanılarak yazılabilir.
Break ve Continue
Program akışında belli koşullar oluştuğunda döngülerin sonlandırılması gerekebilir. Bu gibi durumlarda break
komutu kullanılır. Break komutu aynı zamanda switch yapısından da çıkılmasını sağlar. Continue komutu döngülerde kullanılır ve program akışının döngü bloğunun en başına gelmesini sağlar.
Switch
Switch komutu if - else if yapısına benzer bir karşılaştırma yapısıdır. Switch komutu parametre olarak verilen değer doğrultusunda case ifadeleri ile belirlenen kod bloklarını çalıştırmaya yarar.
Sınıflar
Sınıflar nesne yönelimli programlama yaklaşımının en önemli araçlarıdır. Sınıf tanımlamak için class kelimesi kullanılır. Genellikle sınıf tanımları aynı adı taşıyan ayrı bir dosyada yapılmaktadır. Aynı dosya içinde birçok sınıf tanımlaması yapmak da mümkündür. Visual Studio ile yeni bir sınıf tanımlamak için Project/Add Class menüsünden yararlanılabilir. Bu menü seçeneği seçildiğinde Add New Item diyalog kutusu açılacak ve Class seçeneği seçili olacaktır. Diyalog penceresinin altında bulunan Name bölümüne dosya adı yazılarak yeni bir sınıf oluşturulabilir.
Yeni bir sınıf oluşturulduğunda Visual Studio gerekli olabilecek isim uzaylarını otomatik olarak eklemektedir. Ayrıca yeni sınıf tanımını var olan projenin isim uzayı içinde tanımlamaktadır. Böylece projenin diğer dosyalarından bu sınıfa using kullanmadan doğrudan ulaşmak mümkün olacaktır. Eğer projede çok sayıda sınıf olacak ise ve bu sınıflar hiyerarşik bir şekilde gruplandırılmak isteniyor ise, aynı proje içinde farklı isim uzayları tanımlanabilir. Sınıf yapıldıktan sonra sınıfın üyeleri tanımlanmalıdır. Sınıf üyesi olarak ise değişkenler, fonksiyonlar ve özellikler tanımlanabilmektedir.
Sınıf üyeleri tanımlanırken erişilebilirlik durumunun belirlenmesi gerekir. Erişilebilirlik durumu için public, private, protected gibi erişilebilirlik seçenekleri mevcuttur. Private olarak tanımlanmış olan bir üyeye sadece sınıf içindeki diğer üyelerin içine yazılacak kodlar ile erişilebilir. Sınıf dışından private üyelere erişmek mümkün değildir. Public olan üyeler sınıf içi ve dışından erişilebilirler. Protected özelliği ile tanımlanan bir üyeye sınıf içinden ve o sınıfı miras alan alt sınıfların içinden erişilebilir, sınıf dışından erişilemez. Genellikle sınıf tanımlarında en üst bölümde üye değişkenler tanımlanmaktadır. Genellikle bu üye değişkenler private olarak tanımlanır. Üye değişkenler sınıfın veri depoları olduğu için bunlara dışarıdan doğrudan ve kontrolsüz şekilde erişilmesi istenmez.
Sınıfın private değişkenlerine kontrollü bir şekilde değer atamak ve bu değerleri okumak için sınıf özelliklerinden (properties) yararlanılmaktadır. Özelliklerin içinde get ve set olmak üzere iki blok yazılabilmektedir. Get bloğu ile geriye istenilen değer döndürülmekte, set bloğu ile ise özelliğe atanacak değer (value) private değişkenine aktarılmaktadır.
C# programlama dilinde fonksiyon tanımlamalarında mutlaka bir geri dönüş türü belirtilmelidir. Fonksiyon
içinde de geri dönüş türüne uygun bir return ifadesi mutlaka yer almalıdır. Eğer geri dönüş türü olarak void yazılırsa, geriye bir değer dönüşü yapılmayacağı anlamına gelir ve return ifadesi kullanılmayabilir.
Kurucu fonksiyonlar bu sınıfa ait bir nesne oluşturulduğunda çalışan fonksiyonlardır. Kurucu fonksiyonlarda geri dönüş türü belirtilmez. C# programlama dilinde aynı isimli birden fazla fonksiyon tanımlaması yapılabilmektedir. Bu işleme fonksiyonların aşırı yüklenmesi denir. Fonksiyonları aşırı yükleyebilmek için tanımlanan bu fonksiyonların parametrelerinin farklılık göstermesi gerekmektedir. Tanımlanan kurucu fonksiyonların biri bir parametre alırken, diğeri hiç parametre almamaktadır. Fonksiyon çağrılırken kullanılan parametre sayısına göre derleyici hangi fonksiyonu çağıracağını otomatik olarak belirlemektedir.
Bir sınıfa ait üye değişkenlerin değerlerinin, bu sınıfa ait nesne oluşturulurken belirlenmesini zorunlu kılmak istenirse öncelikle üye değişken sayısı kadar parametre alan bir kurucu fonksiyon tanımlanmalıdır. Eğer parametre almayan bir kurucu fonksiyon daha tanımlanmaz ise yeni bir nesne oluşturulurken parametreli kurucu fonksiyonun çağrılması mecburi olmuş olur. O nesne parametre olmadan oluşturulamaz. Dolayısıyla nesne oluşturulurken üye değişkenlerin ilk değerleri de atanmış olur.
Web Formları
ASP.NET ile uygulama geliştirmenin temelde Web Forms ve MVC olmak üzere iki yöntemi olduğu söylenebilir. MVC yöntemi model (veritabanı), görünüm (HTML, CSS, JavaScript kodları) ve kontrolcü (süreç yönetimi) işlerinin birbirinden ayrılarak yönetilmesi mantığına dayanmaktadır. Yeni ASP.NET proje sayfasında şablonlar içerisinde Web Formları yer almaktadır. Web Formları ile birbirinden bağımsız veya belli ölçülerde bağımlı web sayfaları geliştirilmektedir. Projeler Microsoft Azure üzerinde saklanabilir, dağıtılabilir ve yönetilebilir.
Yeni Web Forms projesi oluşturulduğunda varsayılan olarak birçok dosya da projeye eklenmiş olacaktır. Solution Explorer panelinde projede bulunan dosyalar listelenmektedir. Properties paneli ise editör panelinde seçilen nesne ile ilgili özelliklerin seçilebildiği alandır. Pencerenin sol bölümünde bulunan Tookbox paneli kullanılarak orta panelde açık olan web sayfasına TextBox, Button gibi çeşitli elemanlar eklemek mümkündür. Visual Studio ile çalışmanın en önemli avantajlarından biri de web sayfalarını (HTML, CSS) kod yazmadan görsel olarak oluşturulabilmesidir.
Web Forms olarak oluşturulan web sayfaları aspx uzantılı olmaktadır. Visual studio ile geliştirme yapıldığında ayrıca aspx dosyası ile aynı isimde bir adet cs uzantılı ve bir adet de designer.cs adlı dosya oluşturulmaktadır. Genellikle HTML, CSS ve JavaScript kodları aspx dosyasına, C# kodları ile cs dosyasına yazılmaktadır. Designer.cs dosyası sistem tarafından otomatik oluşturulmakta ve toolbox
kullanılarak form üzerine eleman eklendiğinde otomatik olarak güncellenmektedir.
Eklenen formlarda görüldüğü üzere cs dosyasının içeriği C# kodları şeklindedir. Sistem otomatik olarak System.Web.UI.Page sınıfını miras alan aspx dosya adı ile aynı isimli bir sınıf tanımlaması yapmaktadır. Page_Load fonksiyonu ise web sayfası ilk yüklenirken tetiklenen fonksiyondur. Designer.cs dosyası ise Visual Studio ile yapılan görsel tasarım sırasında otomatik olarak oluşturulan bir dosyadır. Dosyanın kodlarında sınıflar partial class olarak tanımlanır. Partial ifadesi kullanılarak bir sınıfın tanımı birden fazla dosyaya bölünebilmektedir. Derleyici daha sonra bu partial olarak tanımlanmış ismi aynı olan sınıfları birleştirecek ve tek bir sınıf gibi çalışmasını sağlayacaktır. Kitabınız sayfa 197’de Resim 6.7’de basit bir hesap makinesinin tasarımı örneği yer almaktadır. Kitabınız 197-199 sayfaları arasında verilen hesap makinesi için verilen HesapMakinesi.aspx, HesapMakinesi.aspx.designer.cs ve HesapMakinesi. aspx.cs örnek dosyalarının ve açıklamalarının incelenmesi kodların anlaşılması açısından faydalı olacaktır.
Veritabanı İşlemleri
Microsoft SQL Server Management Studio (MSSMS) kullanılarak bir veritabanı ve bu veritabanı içinde tablolar oluşturmak gerekir. MSSMS ile SQL Server’a bağlandıktan sonra yeni veritabanı oluşturulur. Veritabanı açıldıktan sonra Tables bölümüne sağ tıklanır ve açılan menüden New/Table seçeneği seçilerek yeni Tablo oluşturma ekranı ile tablo oluşturulur ve özellikleri detaylı olarak belirlenir.
ASP.NET ile veritabanı bağlantısı yapmak için genel olarak iki yöntem olduğu söylenebilir: ADO.NET ve Entity Framework. ADO.NET aslında veritabanı bağlantılarını yönetmek amacıyla kullanılan .NET içindeki sınıfları temsil etmektedir. Entity Framework ile veritabanındaki tablolar sınıflara modellenmektedir. Veritabanı üzerindeki işlemler ise bu model sınıfları üzerinden gerçekleştirilmektedir. Özellikle büyük projelerde Entity Framework tercih edilmektedir.
Veritabanı üzerinde SQL komutları çalıştırmak için öncelikle System.Data ve System.Data.SqlClient isim uzaylarını çalışmaya eklemek uygun olacaktır. SQL komutları çalıştırmadan önce veritabanına bağlantı yapmak gerekir. Daha sonra bağlantı yapılan veritabanına SQL komutları gönderilebilir. Kitabınızda 200-203 sayfaları arasında verilen Insert SQL komutu, Select SQL komutu, Web Formu oluşturma ve özelliklerini ayarlama kodlarının ve açıklamaların incelenmesi yararlı olacaktır.