Wednesday, May 9, 2007

My default .NET data access strategy - NHibernate based approach

In my new project I and my team are being able to use a set of tools that I have been looking at for some time for data access in .NET. The approach is based on well know open source ORM framework: NHibernate, however, we are using other fantastic tools above it.

Instead of creating NHibernate mapping files, we are using Castle Active Record (AR) attributes to decorate our domain model classes. Analyzing the attributes AR can generate the mapping files dynamically, so we don’t have to deal with a lot of xmls files. We have something like this.

But we also don’t create the domain model directly, we use the Active Writer, which is a VS add-in that works like VS Class Designer, but it generates classes decorated with the AR attributes. So, it’s very fast to create a full domain model mapped using the AR attributes.

However, we don’t use the ActiveRecordBase class as base class for our model in order to avoid getting the persistence methods in our domain model. We prefer to use repositories (DDD flavor).

For the repositories we use a slightly modified version of Rhino Commons ARRepository (generic specialization). The implementation uses the ActiveRecordMediator which already have most of basic persistence operations, such as Save, Delete, FindAll, FindOne, etc.

For custom queries, we try to avoid using the NHibernate query API directly; instead we use the Ayende’s NHibernate Query Generator tool. It allows us to have strong typed queries that feels like SQL Queries, much better/natural in my opinion.

So, we have something like this in the EquipmentRepository:

Equipment FindDougEquip()
{
return FindOne(Where.Equipment.Name == “DouglasEquip” && Where.Equipment.Id > 0);
}


Well, I think this approach is very productive; we have a full persistable domain model and basic repository classes, besides the strong typed queries in few minutes. Really really fantastic open source tools.

2 comments:

Anonymous said...

Thanks for writing this.

Hoàng Quyên said...

Tùy vào đặc trưng và nhiệm vụ cụ thể được đề ra khi trưởng phòng marketing tại hà nội thì mỗi doanh nghiệp tuyển dụng sẽ có những yêu cầu về kỹ năng riêng.
Do đó, trước hết chúng ta cần xác định mô tả công việc có thể bao gồm những hạng mục sau:
Tiến hành xâm nhập thị trường để nghiên cứu: Cần nắm được thị phần, chỗ đứng của doanh nghiệp trên thị trường, đối tượng khách hàng tiềm năng, những đơn vị đối thủ,...
Tìm hiểu hành vi, thói quen tiêu dùng của cộng đồng: Nắm được những xu thế mua sắm và tiêu dùng hiện nay của cộng đồng, hiểu biết hành vi và nhu cầu thực sự cần được thỏa mãn...
Lôi kéo sự chú ý của các đối tượng tiềm năng thông qua các khẩu hiệu, phong cách, thiết kế, bao bì...
Xây dựng hệ thống content phát triển website, những chiến dịch quảng bá, PR, các danh mục bán hàng...
Một số vị trí công việc trong ngành Marketing và Digital Marketing bây giờ là tuyển dụng sale marketing, nhân viên thiết kế marketing, chuyên viên digital marketing, marketing leader, nhân viên marketing online, nhân viên marketing,
Google Adwords, nhân viên Seo...
Nếu bạn muốn xem nhiều hơn nữa các công việc đang HOT hiện nay với mức lương hấp dẫn thì xem ngay tại việc làm nhanh.