Sep
13
Writing the Domain Model classes: coding time (Castle MonoRail and ActiveRecord Tutorial - Part 5)
Filed on September 13th, 2007 at 6:04 pm under .NET, CastleProject, devs, Tutorials | 4 Comments
This is the fifth post of a series started with this post about a MonoRail and ActiveRecord tutorial.
With this post we will finally start to write code for our MonoRail and ActiveRecord tutorial. Here we will go on writing the model classes, and from them we will autogenerate the database schema (alternatively you could first create the database schema and then generate the classes using the generator).
We need to write 5 classes for our 5 models (Album, AlbumGenre, Artist, Genre, Support). As we discussed the convention is to place them under the Models folder of our CastleProject solution.
So let's create these 5 classes.
Aug
30
Writing the Domain Model classes: implementing Relationships (Castle MonoRail and ActiveRecord Tutorial - Part 4)
Filed on August 30th, 2007 at 5:41 pm under .NET, CastleProject, devs, Tutorials | 2 Comments
This is the fourth post of a series started with this post about a MonoRail and ActiveRecord tutorial.
Last time we wrote the Album class and we have seen how to implement the primary key mapping and simple properties mapping.
With simple properties mapping I mean the class properties that will go to map simple data type in the database. Instead with complex properties I will mean the class properties that will go to map a relationship with another table in the database.
For the album class there are simple properties (ID, Name and Year) and complex properties (Support, Artists and Genres).
The simple properties are mapped to standard data types: ID (primary key) to int, Name to string, Year to Int16.
The complex properties are mapped to object types: Support to Support Object, Artists to an IList of Artist Object and Genres to an IList of Genre objects.
Now to go on with the tutorial we should continue writing the other classes (otherwise Album class will not compile), but in this part I first want to show you how to implement relationships in your class.
For a complete introduction to relationship mapping in ActiveRecord you can look here. In this tutorial we will use the most important relationship mapping kinds: BelongsTo, HasAndBelongsToMany (simple and with an attribute).
Jul
10
Writing the Domain Model classes: implementing Identifiers and Properties (Castle MonoRail and ActiveRecord Tutorial - Part 3)
Filed on July 10th, 2007 at 7:28 pm under .NET, CastleProject, devs | Comments Off
This is the third post of a series started with this post about a MonoRail and ActiveRecord tutorial.
There are several approaches for writing the domain model classes for a MonoRail and ActiveRecord application:
- Create the domain model classes from a generator, providing a database schema
- Create the domain model classes from scratch
Consequently, if you have chosen to create the domain model classes from scratch, after you have created the domain model classes you can auto-generate the database schema.
If instead you have already the database schema, you could opt for the first point (and maybe retouch them after the generation).
For the aims of this tutorial, we will first write the domain model classes and then auto-generate the database schema.
These are the domain model classes: copy and paste them under the model folder (once again this is a convention, you can add them in a different place):
May
27
MonoRail and ActiveRecord configuration (Castle MonoRail and ActiveRecord Tutorial - Part 2)
Filed on May 27th, 2007 at 7:52 pm under .NET, CastleProject, devs, OOAD, Tutorials | 1 Comment
This is the second post of a serie started with this post about a MonoRail and ActiveRecord tutorial.
Let's start developing our sample application. The first thing we need to do is to create a .NET project configured for using the CastleProject stuff. You can go in two ways:
- Create a Visual Studio project with the MonoRail project wizard.
The wizard will create for you the MonoRail project structure, generate the configuration elements in the web.config file and add all the necessary references to the project.
You will be prompted to choose a view engine (NVelocity, Brail or ASP .Net Web Forms), if to enable the Windsor inversion of control, and if you wish to create a test project for TDD (Test Driven Development).
For the purpose of this tutorial choose NVelocity, not enable Windsor and create the TDD test project. You can look at the procedure here. - If you are using another IDE than Visual Studio, or if you want to manually configure the environment, you can look at the manual procedure in the same link of the first point.
The references that will be added are:
- Castle.MonoRail.Framework.dll: The MonoRail framework, that implements for the project the MVC Pattern
- Castle.MonoRail.Framework.Views.NVelocity.dll: The view engine we have chosen
- Castle.Components.Binder.dll: The binder implementation
- Castle.Components.Common.EmailSender.dll: The email service contracts
- Castle.Components.Common.EmailSender.SmtpEmailSender.dll: The email service implementation
- Castle.Core.dll: Core functionalities shared by Castle Projects
- NVelocity.dll: The template engine
May
22
Castle MonoRail and ActiveRecord Tutorial (Part 1)
Filed on May 22nd, 2007 at 8:38 am under .NET, CastleProject, devs, Tutorials | 9 Comments
In the last 2-3 years there were a lot of talking about agile and high-productivity development with an outstanding framework that is already in the legend, like happened to Java in the late 90s: Ruby on Rails.
Given its success, many other project in the Open Source community were born trying to reproduce the beauty of the Ruby on Rails rapid and agile development framework for other environments. Just to name a few: Turbogears for Python and Grails for Java.
The main features of these rapid development framework generally are:
- Convention over configuration Pattern
- MVC Pattern
- Inversion of Control Containers and the Dependency Injection Pattern
- An Object Relational Mapper (ORM) for the data layer management
- Code skeleton generators
I have seen many .NET developers migrating to Ruby on Rails or to others high productivity frameworks, not knowing that also for .NET (and Mono) there is already an outstanding framework for this purpose: the CastleProject.
Even if for this framework there is still not a first stable release (the main components are actually at Release Candidate 2), it offers already an excellent solution for agile and rapid development for the .NET world.