Nettiers C# 2.0 ile DAL bastırmak için kullanılan bir CodeSmith template i ve CodeSmith’i satın aldığınızda içinde ücretsiz ve opensource olarak geliyor yani istediğiniz değişikliği yapabiliyor kendi projenize yada firmanıza uyarlayabiliyorsunuz. Basit olarak bir db den nasıl Nettiers ile data access layer basılır onu anlatmaya çalışacağım. Öncelikle CodeSmith in ücretsiz deneme sürümünü CodeSmith Resmi web sitesinden edinebilirsiniz. Nettiers kendi içinde yüklü olarak gelecektir. Benim örnekte kullandığım sürümü 4.2 olup yeni sürümünde bazı değişiklikler olabilir. Öncelikle CodeSmith Studio yu açıyoruz.
Daha sonra Template Explorer üzerinden Nettiers.cst yi açıyoruz. Burda bize template in code-behind scriptler çalıştırdığını ve devam etmek isteyip istemediğimizi soracaktır buna evet diyelim ve eğer isterseniz sonra tekrar sormaması için checkbox ı işaretleyebilirsiniz. Nettiers açıldığında sol tarafta template kodları cst dilinde yazılmış bir şekilde açılacaktır. Bu kodlar sizi korkutmasın Asp.Net ile çok benzer bir yapıya sahip ve Csharp yada başka bir desteklenen dilde yazabiliyorsunuz. Nettiers Csharp ile yazılmıştır. Kodların üzerine bir kez tıklayıp Properties kısmına geçtiğinizde Nettiers ın Propertyleri karşınıza gelecektir.
Burdan Choose Source Database (En üstte bulunan) kısmından DAL’ını bastırmak istediğiniz db yi seçebilirsiniz. Sonrasında Output Directory kısmından üretilecek olan dosyaların nereye kaydedilmesi gerektiğini seçmeniz gerekecektir. Bukadar işlem DAL’ınızın basılması için yeterli olsada bastırmak istemediğiniz tablolar var ise bunların DAL’a eklenmemesi için SourceTables kısmından sadece işinize yarayacak olan tabloları yine SourceViews kısmından işinize yarayacak olan view leri seçebilirsiniz.
Burda işlemimiz temel olarak bitiyor ancak Nettiers bir hayli gelişmiş bir CodeSmith template i bir çok özelleştirme yapmanıza imkan tanıyor bunların ne olduğu Nettiers sitesinde çok net bir şekilde anlatılmıyor malesef ancak CodeSmith web sitesinde bulunan forumlardan takıldığınız yerler hakkında bilgi alabilirsiniz. Yine properties kısmında üzerine geldiğiniz property’nin açıklaması aşağı kısımda yer almakta. CodeSmith studio genel anlamda .Net için birşeyler yapmakla beraber Sql sorgularıda oluşturabilen bir program. Ve .Net yazılımcılarının kolay kullanabilmesi için bildiğimiz Visual Studio ortamının benzerini geliştirmiş. Üst araç çubuğunda yer alan Run (Üçgen) butonuna tıkladığımızda artık DAL’ımız oluşturulmaya başlanıyor.
Oluşturulduğunda varsayılan tarayıcı ile bir rapor sayfası gösteriliyor ve bize tam olarak hangi class’ları oluşturduğunu ve nasıl kullanılacağını ufak örneklerle açıklıyor. Bundan sonra bize Visual Studio solution unu açıp derlemek ve çıkan Dll leri projemizde kullanmak kalıyor.
Küçük bir örnek olaması amacıyla Solution u Visual Studio da açıp Web kısmına gelin ve yeni bir WebForm ekleyin. Kod kısmına geçerek aşağıda verdiğim kodları kendi Db nize uyarlayarak Nettiers’ın neler yapabildiğini görün.
using Sozluk.Entities; using Sozluk.Data; public partial class Test : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Entry birAdetEntry = new Entry(); birAdetEntry.Entry = "Merhaba Dünya Nasılsın"; birAdetEntry.UserIdSource = new User(); birAdetEntry.UserIdSource.Email = "yilmaz@nospm.yilmazyavuz.com"; birAdetEntry.UserIdSource.NickName = "yilmaz"; birAdetEntry.UserIdSource.UserName = "abc"; birAdetEntry.UserIdSource.Password = "123"; birAdetEntry.TitleIdSource = new Title(); birAdetEntry.TitleIdSource.Title = "Merhaba"; DataRepository.EntryProvider.Save(birAdetEntry); } }
Burda oluşturduğumuz Entry class’ının instance ı içine UserIdSource ile ona bağlı yeni bir user oluşturuyoruz, aynı şekilde yeni ona bağlı bir title oluşturuyoruz. Ve Nettiers’ın oluşturduğu EntryProvider.Save methodu ile bunları db mize kaydediyoruz. dipnotlar: Nettiers Enterprise Library alt yapısını kullanmaktadır. CodeSmith ücretli bir yazılımdır ve bir çok template i bulunmaktadır Nettiers hakkında kısıtlı bir destek olmakla birlikte kendi sitesinden ücretli destek satın alınabilmektedir. Örnekte bulunan kodların Sourtimes ile herhangi bir ilgisi yoktur.
–
Düzenleme:
Save(..) methodu sadece entity nin kendisini kaydetmek için kullanılmaktadır. Bu örnekde kullanılması gereken method DeepSave(..) dir. DeepSave(..) entity ve ona ilişkili KOLONADISource yada TABLOADICollection şeklindeki propertylerin içinde bulunan entityleri de kaydetmek için kullanılır.

Son Yorumlar