
September 9, 2009 04:02 by
OMR
Çoğu yazılımcının yaptığı gibi "sürekli yapma alışkanlığı"nızdan kurtulun. Aynı kodu defalarca yazamaktan sıkılmadınız mı? Yada her yeni proje ile birlikte aynı şeyleri baştan yazmaya başladığınızı düşünmediniz mi? Tekrarlamaları farketmeye çalışın çünkü bunları otomatikleştirebilirsiniz. En basit örneği olarak bir tabloyu .net class'ına dönüştürme işlemini neden her seferinde baştan yazasınız ki? Yada bu tablo için gerekli CRUD operasyonlarının kullanacağı stored procedure'leri neden tek tek yazmanız gerekiyor? Bu ve bu gibi durumlar için okumaya devam edin.
Nedense bazı şeyleri otomatik yaptırmak tembellikle özdeşleştiriliyor. Bence bu tarz kendime standartlaştırdığım bazı işleri otomatik yapmamın hiçbir zararı yok çünkü bu tür işler çok fazla zamanımı alıyor ve asıl iş gücümü harcamam gereken aşamalar için daha az zamanım kalmış oluyor. Tembellik değil tasarruf edin. Bu noktada code generatorlar iş bitirir. Bu yazıda code smith neler yapabileceği hakkında bilgi vereceğim.

Code smith temelde generate edilecek kaynağın şemalarını barındıran bir programdır. .netTiers, CSLA, NHibernate, PLINQO, Wilson's ORMapper, APOSA ve daha bir çok frameworkle çalışabilecek kodlarınızı kolayca oluşturmanızı sağlar. Uygulamanın öğrenci sürümünü alabilmeniz de mümkün bunun için öğrenci belgenizi göndermeniz de yeterli oluyor. Visual studioya entegre çalışıyor. Tool menusunun altından yada view sekmesinin altındaki CodeSmith Explorer ile ulaşılabiliyor. Varsayınlan olarak tanımlanmış active snippet'ler sahesinde 3-4 kelime yazarak tüm kodu oluşturabilirsiniz.
Bu makalede basit bir veri erişim katmanını inceleyeceğim.Uygulama içinde hazır gelen TableProperties.cst şablonu üzerinde yapacağım geliştirmelerle devam ediyoruz.

TableProperties.cst dosyasını açtığınızda Visual Studio 2003'e çok benzer(aynısı olabilir) kod editörü ile karşılacaksınız. Kodlar şu şekilde:
<%--
Name: Database Table Properties
Author: Paul Welter
Description: Create a list of properties from a database table
--%>
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Debug="False" Description="Create a list of properties from database table." %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="Table that the object is based on." %>
<%@ Map Name="CSharpAlias" Src="System-CSharpAlias" Description="System to C# Type Map" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
<% foreach (ColumnSchema column in this.SourceTable.Columns) { %>
private <%= CSharpAlias[column.SystemType.FullName] %> _<%= StringUtil.ToCamelCase(column.Name) %>;
public <%= CSharpAlias[column.SystemType.FullName] %> <%= StringUtil.ToPascalCase(column.Name) %>
{
get { return _<%= StringUtil.ToCamelCase(column.Name) %>; }
set { _<%= StringUtil.ToCamelCase(column.Name) %> = value; }
}
<% } %>
More...
01b8657c-cfd9-4cbb-84b2-ef719b77bed7|3|3.0