Introduction
Before I start to explain what my code generator is and how
it works, I want to let you people what thing have hit me to write this article
and my code generator.
Well as all programmer knows that writing code for DAL and
BL is time consuming and we write same lines of code for each project excepts
some custom changing, so I was wondering by we take such burden every time
there should some other fast, easiest , efficient way, so I started to explorer
it and started working on that, as I progress I find CodeSmith (www.codesmithtools.com) as a useful
tool to achieve that.
CodeSmith enables
software developers to efficiently:
- Reduce repetitive coding
- Generate your code in less time with fewer bugs
- Produce consistent code that adheres to your standards
- Create your own custom templates for any language
So I started to learn the codesmith, and luckly due to its easy structure I grasp its concept
, working quickly.
Now I should
explain the working of my software. First of I started to work on writing
templates for myself. I stated building my own frame work, As I am beginner so
started to understand the .netTiers Application Framework (http://www.nettiers.com). After under standing
this framework I started to build my framework and get some help from the .netTiers
Application Framework.
My framework consist of the following classes
- Entity Class
- Entity Base Class
- EntityController Class
- EntityController Base Cclass
- DataProvider Class
- DataProvider Base Class
- GenericList Class
- CBO Class
Entity Class:
This class is
inherited from the base class Entity Base Class, the entity class contain no
function but you can override the virtual function in the base class, and if
you want some custom function then you can write your own function in the
entity class no in the base class.
Entity Base Class;
This class
have the properties , methods to that should be required for the database
table. Its an abstract class. This class have the following functions other
then the constructor
EntityController Class:
This class is
inherited from the base class EntityController Base Class, this class can also
override the virtual functions from the base class.
EntityController Base Class:
This class
have the basic methods as follows
- Add(with four overloaded methods
- Update(with four overloaded methods)
- Delete(with four overloaded methods)
- GetPagedData(for getting data in the form of page)
- DeleteAll
- Get
- GetAll
- GetCustomView(to get the custom data base table columns
- GetByPk
- CountAll
- GetByFk
This class
call the function of the DataProvider class to interact with the database.
DataProvider Class:
This class is
inherited from the base class DataProvider Base Class, this class can also
override the virtual functions from the base class.
DataProvider Base Class:
This class
actually interact with the database. For this purpose I uses the Microsoft
Enterprise Library 2006. which provide efficient data access libraries. You can
download the enterprise library from the Microsoft site (www.microsoft.com).
GenericList Class:
In my
framework for getting data in bundle I uses generic list instead of the
datasets, for this I write the generic class.
CBO Class:
For converting
the object to the required class or entity object I use this class.
CodeGenerator:
I wrote
CodeSmith templates for above mentions class, other then these to class I wrote
an other template which was use to generate the store procedure which will be use
by the methods in the DataProvider Base Class.
Now come to
point why I write the application for compiling the CodeSmith templates that I
have written, the problem was that to generate the code for the some database
we have to compile each template for each table. So it take some time and also
some hectic, so I develop the application to perform this work, I generate the
code using all these templates by just info about the database. I develop this
tool which uses CodeSmith API to compile the templates. Please install the
CodeSmith 3.2 on your system to generate the code
There was
another class for the CodeSmith templates which was code behind class SqlScript.cs;
I adopted this class from the .netTiers Application Framework (http://www.nettiers.com). And have some
custom function to be used in my framework.
Please let me
know about your suggestions and comments thanks, and I am working on to version
capability like dot net 2003 and dot net 2005. And also to compile the other
templates also not specific related to my frame work
Name:
Muhammad Shafqat Masood
Software
Engineer (Nextbridge)
Contact:
Napster_ghb@yahoo.com