ASP.Net’te uygulama geliştirirken genellikle Insert, Update, Delete, Read işlemleri yaparız. Bu işlemler için her tablo için yeni bir web form oluşturup bu formdan SQL kodu oluşturup veritabanına gönderir, işlemimizi tamamlarız.
Bu tür standart kayıt işlemleri için Microsoft, .Net Framework 3.5 SP1 ve sonraki sürümlerinde Dynamic Data Web Site/Application paketini çıkardı. Bu paket sayesinde basitçe yukarıda saydığımz işlemleri gerçekleştiren projeyi Visual Studio bizim için hazırlıyor, biz de sadece veri kaynağımızı gösterip gereken noktalarda var olan sistem üzerinde düzenlemeler yapıyoruz.
ASP.Net Dynamic Data Web Application konusunu bir örnek ile inceleyelim.
Yeni bir ASP.NET Dynamic Data Entities Web Application oluşturalım.

Projemizi oluşturduktan sonra Solution Explorer’dan sistemin bizim için oluşturduğu proje yapısına göz atalım.

Dikkat ederseniz bütün işlemler için birer user control (ascx) oluşturulmuş ve bu oluşturulan kontroller Details, Edit, Insert, List ve ListDetails sayfalarına yerleştirilmek suretiyle çalıştırılmıştır. Şu aşamada user controlleri incelemeyeceğiz, sadece sistemin nasıl çalıştığını anlamamız yeterli olacaktır.
Projemize bir adet Ado.Net Entity Data Model ekleyelim. Bu modele, SQL Server veritabanımızda bulunan Marka ve Urun tablolarını ekleyelim (tabloların yapısını aşağıdaki gibi oluşturabilirsiniz)

Projemizi oluşturduğumuzda ilk önce bizim için önemli olan nokta Global.asax.cs dosyasıdır. Projemizin temel bilgileri, veri kaynağı burada belirlenmektedir.
Proje oluşturulduğunda Global.asax.cs dosyamızın RegisterRoutes methodu aşağıdaki gibi gelmektedir.
|
public static void RegisterRoutes(RouteCollection routes)
{
// IMPORTANT: DATA MODEL REGISTRATION
// Uncomment this line to register an ADO.NET Entity Framework model for ASP.NET Dynamic Data.
// Set ScaffoldAllTables = true only if you are sure that you want all tables in the
// data model to support a scaffold (i.e. templates) view. To control scaffolding for
// individual tables, create a partial class for the table and apply the
// [ScaffoldTable(true)] attribute to the partial class.
// Note: Make sure that you change "YourDataContextType" to the name of the data context
// class in your application.
//DefaultModel.RegisterContext(typeof(YourDataContextType), new ContextConfiguration() { ScaffoldAllTables = false });
// The following statement supports separate-page mode, where the List, Detail, Insert, and
// Update tasks are performed by using separate pages. To enable this mode, uncomment the following
// route definition, and comment out the route definitions in the combined-page mode section that follows.
routes.Add(new DynamicDataRoute("{table}/{action}.aspx")
{
Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }),
Model = DefaultModel
});
// The following statements support combined-page mode, where the List, Detail, Insert, and
// Update tasks are performed by using the same page. To enable this mode, uncomment the
// following routes and comment out the route definition in the separate-page mode section above.
//routes.Add(new DynamicDataRoute("{table}/ListDetails.aspx") {
// Action = PageAction.List,
// ViewName = "ListDetails",
// Model = DefaultModel
//});
//routes.Add(new DynamicDataRoute("{table}/ListDetails.aspx") {
// Action = PageAction.Details,
// ViewName = "ListDetails",
// Model = DefaultModel
//});
}
|
Bu uygulamamızda, MarketEntities’i veri kaynağı olarak gösterebilmek için açıklama satırı olarak yazılmış olan şu kodun yerine
|
DefaultModel.RegisterContext(typeof(YourDataContextType), new ContextConfiguration() { ScaffoldAllTables = false });
|
typeof’ta parametre olarak gönderilen ContextType’a kendi entity modelimizi veriyoruz ve ScaffoldAllTables seçeneğini true yapıyoruz.
|
DefaultModel.RegisterContext(typeof(MarketEntities), new ContextConfiguration() { ScaffoldAllTables = true });
|
Projemizi çalıştıralım.

Karşımıza veritabanımızda bulunan tablolarımız geldi. Şimdi Marka linkine tıklayalım.

Karşımıza Marka listesi ekranı geldi. Yeni bir marka eklemek için Insert new item linkine tıklayalım.

Marka bilgilerimizi yazdık, Insert linkine tıklayalım ve kayıt işlemimizi gerçekleştirelim.

Insert linkine tıkladıktan sonra tekrar az önceki marka listesinin bulunduğu sayfaya yönlendirme yaptı ve “Marka” isimli markamızı ekledi. Şimdi Marka’nın detaylarına bakmak için Details linkine tıklayalım.

Marka detay bilgilerimiz geldi. Şimdi markamızın ürünlerini listelemek için View Urun linkine tıklayalım.

Şu anda sistemimizde ürün olmadığı için boş gelmektedir. Yeni bir ürün eklemek için Insert new item linkine tıklayalım.

Ürün bilgilerimizden primary key UrunId, auto increment olarak ayarlandığı için sistem tarafından ekranda gösterilmedi. Ürün bilgilerimizi girelim ve Insert linkine tıklayalım.

Göründüğü gibi ürünümüz Marka kategorisine eklendi. Şimdi Marka combobox’ından All seçeneğini seçelim ve tüm ürünleri listeleyelim.

Veysel Uğur KIZMAZ
Bilgisayar Mühendisi
veysel@ugurkizmaz.com
www.ugurkizmaz.com
twitter: @vukizmaz