From a data centric to a domain driven design

Introduction

Is NHibernate as an ORM tool or framework better suited for a data centric application or for an application developed by applying domain driven design? Well, that should NOT be the question here. NHibernate can serve equally well both approaches. But which one would you choose?

A data centric design

The modeling of the data structure is the center piece of this kind of design. The database is the most important part of our architecture. The DBA plays a very important role.

Data Layer

That's ok for simple problems like managing a collection of customer addresses and nothing more. But it miserably fails as soon as we get into more complicated business. Let's e.g. assume that all of the sudden our address management tool needs to be extended to a full fledged CRM solution.

Possible Problems

  • Management night mare with possibly hundreds of stored procedures
  • No clear structure in the data. It seems that each entity (or table) has more or less the same importance
  • We concentrate to much on the data and not on the business processes and/or functionality

Our principle questions are focused around

  • Do we have all data that we need (tables and columns there in)?
  • Did we normalize the data sufficiently?

Instead of

  • What do we want to automate and why do we want to do so?
  • How can we measure that we have achieved what we want (criterions!)?

User Interface

On the other hand we concentrate too much on e.g. data binding on the GUI and how to best present (too much) data on the screen for the user.

A sample taken from a real application

This is a sample from a real application (although simplified). At the beginning there was a data model (ERD) which was elaborate by two persons in a "heroic" several men month long effort. Let's show an extract of this data model

image

It might be clear after staring a while on the ERD that we want to manage employees and their assigned tasks. It's also clear that an employee is a person and that it has an address and two different titles. Further on each employee can have an associated photo. Finally we see that the data regarding an employee is split into two different tables [Employee] and [EmployeeDetails] obviously for scalability reasons. Since photos can become very large (compared to the rest of the data) they are kept in a separate table [EmployeePhoto] which possibly resides in separate database file on another disk.

Stored Procedures

Traditionally Microsoft has suggested us to write stored procedures to access and manipulate the data in the various tables. So usually one would write the following kind of stored procedures for each table (here as an example we use the Address table)

  • usp_AddressInsert(...)
  • usp_AddressUpdate(...)
  • usp_AddressDelet(...)
  • usp_AddressSelectById(...)

if we look at a table like [Employee] we would probably have many more stored procedures representing various querying scenarios, e.g.

  • usp_EmployeeSelectAll()
  • usp_EmployeeSelectActive()
  • usp_EmployeeSelectByDepartment(...)
  • etc.

Data access objects (DAO)

Now having the stored procedures in place we write a DAO for each table to produce a object oriented wrapper around the database (the business object should not know anything about the database). We thus will have the following class for e.g. the Address table

public class AddressDAO
{
    public void Insert(...) {...}
    public void Update(...) {...}
    public void Delete(...) {...}
    public Address GetById(...) {...}
}

A domain driven design

The modeling of the business processes is the center piece of this kind of design. The so called domain model is the center of our architecture. The domain expert (a representative of the customer with deep knowledge of the domain for which the application is planned) plays a very important role during all the development phases (analysis, design and implementation). The development often is more evolutionary and goes in "cycles". It's often a so called agile application development.

Distilling the ubiquitous language

Together with the domain expert  we want to find and use the ubiquitous language which describes best the business we are talking of. In our simple case this ubiquitous language is "hidden" in the following fragments of a discussion

"... So we want to keep track of our employees. Especially we want to know where the employee lives and how we can contact him at home as well as in the office. To better identify an employee (and for other usage as well, e.g. to apply for a business travel visa) we want to have a photo of him in the system. ..."

"... yeah, each employee has a business card of course where he's title and job description is marked... thus I guess we have to store this information - we call it title - in the system as well since the relevant text for a new business card shall be generated automatically... By the way, the titles should be available in German and in English. ..."

"... each employee has a list of tasks to carry out during his daily work. This list should be maintained and updated by the system. Tasks can be produced automatically by the fact that some event occurred, e.g. there is a redemption of a bond. Other tasks are a result of a contact with a customer. And last but not least the group manager can define some tasks for an employee or a group of employees. ..."

"... as an employee I want to see a list of my open tasks. I want to also see if tasks are over due and which tasks will occur in the near future. ... I also want to see the priority of each task and what it's current status is. ..."

I have marked in bold the key terms for our simplified domain. These nouns will be good candidates for entities or value objects.

A first model of our domain

We can immediately locate two hot candidates for entities. These are employee and task. We also immediately grasp that a employee might have a list of associated tasks. Every thing else is just detail for the moment. So let's draw a nice diagram

image

Refining the model

Up to now our model does not contain much structure and business logic. Let's start with the question how we could better model the employee entity. At the moment the employee contains just a bunch of properties and no clear internal structure is visible. To find out e.g. whether an instance of employee is in a valid state is rather cumbersome. Comes the value object to the rescue! What about this?

image

In the above model I have tried to group properties which belong together. Let's take as an example the address. A valid address is represented by an address line, a postal code and a city (in the real world we would also have a link to a country there). An address line alone does not really make sense. Again: we can validate an address only if we have the whole group of relevant properties at hand. On the other hand it does not really make sense to put the address validation logic into the employee entity itself. Thus the extraction of a new class - the address class - is certainly an improvement. In the terminology of DDD the address is now a value object. It has no identity by itself and belongs to and characterizes an entity (the employee). A value object can be recreated any time by just copying the content of its properties. Further on a value object is immutable. Once created it cannot be changed. Two instances of a value object are equal if the content of their fields match. A value object can never be in an invalid state.

Let's have a look at the code of the address class then

public class Address : IEquatable<Address>
{
    public Address(string addressLine1, string addressLine2, string postalCode, string city)
    {
        if(addressLine1==null) 
            throw new ArgumentException("Address line 1 cannot be undefined.");
        if(postalCode==null) 
            throw new ArgumentException("Postal code cannot be undefined.");
        if(city==null) 
            throw new ArgumentException("City cannot be undefined.");
 
        AddressLine1 = addressLine1;
        AddressLine2 = addressLine2;
        PostalCode = postalCode;
        City = city;
    }
 
    public string AddressLine1 { get; private set; }
    public string AddressLine2 { get; private set; }
    public string PostalCode { get; private set; }
    public string City { get; private set; }
 
    public bool Equals(Address other)
    {
        if(other==null) return false;
        return AddressLine1 == other.AddressLine1 &&
               ((AddressLine2==null && other.AddressLine2==null) || 
               (AddressLine2 != null && AddressLine2 == other.AddressLine2)) &&
               PostalCode == other.PostalCode &&
               City == other.City;
    }
 
    public override bool Equals(object obj)
    {
        return Equals(obj as Address);
    }
 
    public override int GetHashCode()
    {
        return string.Format("{0}|{1}|{2}|{3}", 
            AddressLine1, AddressLine2, PostalCode, City).GetHashCode();
    }
}

Note that all properties are read-only to account for the fact that a value object is immutable. Thus an address can only be constructed through its constructor. Note also that I have implemented the interface IEquatable<T> and overridden the two methods Equals and GetHashCode to be able to compare two instances of type Address for equality. Pay attention on the special treatment of the AddressLine2 property in the Equal method. It's the only property that can be null. All others properties cannot be null. This requirement is enforced in the constructor where I check each non-nullable parameter and throw an exception if the requirement is not met.

The above code is a typical sample of how one would implement a value object.

I think it makes sense that also the Employee entity is always in a valid state. A possible solution how to achieve that is to also make all properties of the entity read-only and force any modification to use dedicated methods. I would also provide a constructor which expects all mandatory values, e.g.

public Employee(Name name, Title title1, Address homeAddress, Address officeAddress, 
    Contact homeContact, Contact officeContact)
{
    if (name == null)
        throw new ArgumentException("Name of employee cannot be undefined.");
    if (title1 == null)
        throw new ArgumentException("Title 1 of employee cannot be undefined.");
    if (homeAddress == null)
        throw new ArgumentException("Home address of employee cannot be undefined.");
    if (officeAddress == null)
        throw new ArgumentException("Office address of employee cannot be undefined.");
    if (homeContact == null)
        throw new ArgumentException("Home contact of employee cannot be undefined.");
    if (officeContact == null)
        throw new ArgumentException("Office contact of employee cannot be undefined.");
 
    Name = name;
    Title1 = title1;
    HomeAddress = homeAddress;
    OfficeAddress = officeAddress;
    HomeContact = homeContact;
    OfficeContact = officeContact;
}

Once an employee exists in the system and I want to e.g. change its home address then I use a dedicated method of the employee class

public void ChangeHomeAddress(Address newHomeAddress)
{
    if (newHomeAddress == null)
        throw new ArgumentException("Cannot change home address of employee to undefined.");
    HomeAddress = newHomeAddress;
}

This method again asserts that after the updating the employee instance is again in a valid state.

Summary

For me it's obvious that the domain driven approach is definitely the better way to go when implementing an application which models complex business processes. A more data centric approach may still make sense when dealing with a forms-over-data type application which does not involve complex business processes. But even when implementing a data centric application I would certainly never ever use stored procedures to access the data. I would instead use an ORM tool like NHibernate to access the database. The only exception I can see for justifying the use of stored procedures is in reporting scenarios where some massive data mapping, filtering and/or aggregation might be needed which is best done directly on the database server (in-process for maximum speed).

Enjoy

Blog Signature Gabriel

Print | posted on Tuesday, February 03, 2009 4:08 AM

Comments on this post

# re: From a data centric to a domain driven design

Requesting Gravatar...
Thanks for this post.

I'm in the process of trying to develop a practical understanding of DDD and this kind of post is really helpful.

Could you take this another step and show how the model relates to the database and then how you'd configure NHibernate to accomplish the actual persistence?
Left by Everett Muniz on Feb 03, 2009 5:51 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
@Everett: the database schema is generated from the (domain) model. The mapping I would do using Fluent NHibernate (see my 4 posts on this topic where I discuss the details)
Left by Gabriel N. Schenker on Feb 03, 2009 8:07 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Thanks Gabriel...what I was most interested in was here: A fluent interface to NHibernate - Part 2 - Value Objects.

Awesome stuff.
Left by Everett Muniz on Feb 03, 2009 10:23 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Hi, excellent article as usual.
Glad to see that your blog isn't dead (I've read your articles on "Los Techies").
Keep the good work.
Left by jaime on Feb 03, 2009 1:03 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Another good entry. It still surprises me how hard it is in the .Net world to convince people that ORM is a better approach than the data centric one that you laid out.

Simply stored procedures create other nightmares such as refactoring nightmares and are containers for Cursors & Temp tables.
Left by Scott White on Feb 05, 2009 3:32 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Great! But there is one thing missing, usually when using DDD one ends up with a different ER schema and I wonder how yours would turn out. NH mappings are very flexible and you can map a lot to different tables etc. My main point is that data centric design (DCD) tends to over-normalize the database while using DDD one makes compromises (at least in my world).

Keep up the great work!
Left by Steinard on Feb 06, 2009 11:33 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Why is it, that a value-object should always be immutable ?
'Till now, I haven't understood this really. Doesn't this make it more cumbersome to change the Address in this case for instance ?
When changing the Address of an employee, you'll have to insert a new record in the DB, delete the existing address, etc...
Left by Frederik on Feb 15, 2009 1:32 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
What is the point of using ChangeHomeAddress method instead of having a setter on HomeAddress? The logic you have in ChangeHomeAddress could be captured inside of the setter as well.

I had been following strict DDD and doing what you are doing with ChangeHomeAddress until I began to think about it and wonder if it is really needed. Is it not the point of properties in C# that we can have logic in our setters so we do not need such ChangeXXX methods as the Java people do.

I understand that ChangeXXX may fit into the ubiquitous language better; however, in code the fact that we are changing the home address is expressed just as clearly with

employee.HomeAddress = newHomeAddress

as it is with

employee.ChangeHomeAddress(newHomeAddress)

What're your thoughts on this?
Left by Nathan Stott on Feb 22, 2009 3:49 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
@Frederic: if Address is mapped as a component in NHibernate then then the address fields are part of the employee table. So no delete and insert needed! Please have a look at other articles in my blog where I explain the concept of value objects in more detail... ;-)

@Nathan: DDD is all about ubiquitous language and clearly defining the intent of an operation. So ChangeAddress clearly expresses the intent while an assignment to a property does not.
Left by Gabriel N. Schenker on Apr 05, 2009 11:23 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Any thoughts on a more behavioral approach to classes. I have developed mainly using models like this, its almost as if it could be called entity oriented programming. Generally these classes that represent "normalized" entities require much in the way of structures and service provider classes to make them useful. In the following example suppose there were an employee tracking or employee information class that contained methods for assigning and retrieving employee information (most of the data needed is just basic ). The behavior of tracking and employee, (assigning information to be retrieved for some useful purpose) would be isolated to a single class (which could always be refactored for reuse if that became a good option) . Don’t get me wrong, I am used to developing this way, I am most comfortable with this but I do notice that I have a ton of tiny trivial classes that are structured by loads of XML and all I get are basically a bunch of dumb object that serve no purpose. The classes don’t do anything useful, a employee information class to me is better because it does not try to mimic some data structure and tie it all together to make something useful, who cares what a title or phone number is , for this purpose (entering and storing information about an employee) its just a string or enum value, maybe I don’t need all this information for tracking employees in English, in german, Maybe a GetTitle(String language) would be better in case we went French. In my limited experience with a more responsibility oriented design I have found that I can save a tremendous amount of time, and provide better tests because there is less to test. I am not claiming this approach to be the answer, just trying to stir up some conversation about it.
Left by Chris on Apr 16, 2009 4:44 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
@Chris: If I understand you correctly you are pointing out an important aspect of the discussion around DDD. Anemic entities versus entities with a lot of behavior. DDD definitely favours the latter one. Purist are even going as far as saying that exposing properties on domain entities is a smell. Data should be encapsulated. If you do this then you need at the same time other means to get and e.g. display your data. I suggest you read the various posts and remarks of e.g. Greg Young about this topic. And do not forget the bible of DDD (of Eric Evans)
Left by Gabriel N. Schenker on Apr 16, 2009 12:30 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
[blockquote] The only exception I can see for justifying the use of stored procedures is in reporting scenarios where some massive data mapping, filtering and/or aggregation might be needed which is best done directly on the database server (in-process for maximum speed)[/blockquote]

Even in this Scenario you need not to use stored procs;
With View on View technique and analytic query features (talking about oracle) a lot is possible with best performance and without procedures. procedures itself are not a grant for better performance but the SQL and Logic used in them.

Very nice and clear article
/Karl

Left by Karl Reitschuster on May 08, 2009 2:29 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
'The Refined Model ...'

it's much more human readable - but how about database persistance? you would need a lot of joins to retrieve a complete Employee object without ever joined to another table ...

the more joins you have in an SQL the more piftalls the sql query optimizer could fall, parsing (compilation) time increases a lot and statement execution time suffers from index fk scans

/Karl

Left by Karl Reitschuster on May 08, 2009 2:50 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Hello, I'd like to get started with all this DDD concept..

The most problem I have is that I dont know how to translate my model to database, I mean, it's not like NHibernate (data centric) where each entity is a table..

1. Do you need to create your own database layer? All persintences stuffs?
2. What if model changes, what happens with your model, and your database schema?
3. What is the advantage of DDD over DataCentric programming?

Regards
Left by Cesar Sanz on May 20, 2009 10:18 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
I'd probably end up with the same DDD-like architecture for the v2, but I prefer to add things as I need them. Yes, I prefer to start with a disposable top-down data-centric solution which I'll refactor into something DDD-like as/when/if complexity arises.
Left by play pny slot machines on Jul 30, 2009 10:18 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Great stuff, thank you for sharing :D

Theres one thing i dont understand. How do you map value objects like the Address. Is it possible to see your mapping file for the employee entity and the adress object?

From what i know (and thats very limited) nhibernate offers the component mapping type for value objects. But this mapping type means that the adress informatin must be in the same table as employee. How can i avoid this?
Left by Juice on Aug 04, 2009 10:03 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
I need some more details regarding A data centric design, as I am launching my new site regarding web desiging and internet marketing, I am just seeking some unique information from your side in terms of data centric designs. Though there are many designers to whom I know, I am looking for some detailed guide.
Mail me if possible.
Left by rainwater tanks on Aug 06, 2009 8:20 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Nice post,
domain driven approach is definitely the better way to go when implementing an application which models complex business processes.

Thanks for writing about it
Left by software development company on Aug 20, 2009 6:13 AM

# plastic tanks

Requesting Gravatar...
This description is far better than those given in my book... Easy and effective..
Cheers....
Left by plastic tanks on Aug 26, 2009 2:54 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
When reading this article, my first thought was an incredulous: "Are there still people doing pure data-centric designs in this day and age?"

Then I remembered two of my old projects where we relied on data-centric designs. One of them was led by a business analyst who was trained in the traditional Entity-Relational model. In the other project, the most senior techie was the DBA.

Ultimately, whether your team uses data-centric design or domain driven design most likely depends on the people in charge. If you are in charge of making the decision, you may want to consider your development team's overall experience as well as the experience level of future maintainers of the project. In many of my previous projects, I found that the guys doing the maintenance are best (most kindly) described as inexperienced. In projects like these, the system eventually deteriorated into straight ODBC/JDBC + SQL.
Left by Outdoor Wicker Furniture on Oct 28, 2009 1:45 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Thanks for sharing such an important information.I really enjoyed this article.I just wanted ti thank you for this read.
Left by Spielregeln für Black Jack on Oct 29, 2009 5:33 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Thanks for this. Great stuff!

It is well-explained and a very handy reference for an under-documented feature.
Left by Multivariate Testing on Nov 07, 2009 12:20 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
I think you’ll have fun with your DDD project. Don’t be afraid of merciless refactoring either. You’d be surprised at how the simplest of domains ends up being much more interesting than you initially thought.

Personally, there is a strange satisfaction from reading your code and realizing it reads like an English sentence. DDD aids greatly in this quest.
Left by Call Center Software on Nov 07, 2009 12:43 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Nice post.

I do think it’s important to emphasise the “Domain” in Domain Driven Design. Developers need to understand the domain model before they start creating templates/xml files – and that can be quite tricky itself (depending on the complexity of the business).

If anyone is interested in rapid domain modelling, we offer a tool to do just that. You can find it at:
http://www.evolving-software.co.uk

The best of luck with your project.
Vijay Patel
Left by International Medical Insurance on Nov 07, 2009 12:56 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
I need some more details regarding A data centric design, as I am launching my new site regarding web desiging and internet marketing, I am just seeking some unique information from your side in terms of data centric designs
Left by http://www.pokergameinfo.com/ on Nov 08, 2009 11:16 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Thank you so much for you well written article. It is helping me lots.
Left by Tyre Supplier on Nov 23, 2009 10:51 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Have you ever done the researches like those one as I see you’ve got a lot of good responses.
Left by kids with autism on Dec 03, 2009 1:57 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Wow, that is very indepth analysis of server technology and well laid out too. Beats some textbooks for sure :)
Left by Genf20 on Dec 16, 2009 2:18 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
I really enjoy this article to comment it is very good for everyone and it is very help fool.
Left by alternative medicines on Dec 16, 2009 9:52 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Hi, excellent article as usual.
Glad to see that your blog isn't dead (I've read your articles on "Los Techies").
Keep the good work.
Left by pandora jewelry on Dec 24, 2009 11:47 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Considerably, the article is in reality the greatest on this noteworthy topic. I agree with your conclusions and will eagerly look forward to your next updates. Saying thanks will not just be sufficient, for the wonderful clarity in your writing. I will immediately grab your acai berries rss feed to stay privy of any updates. Pleasant work and much success in your business dealings!
Left by healthy weight loss pills on Dec 26, 2009 12:50 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
This will be of great help for many users who like to work on domain driven designs. Looking forward for some more innovative from your end.
Left by Hot Dip Galvanizing Virginia on Jan 04, 2010 10:56 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Thanks so much for sharing all these vital details and codes with all the users. This will help many working professionals as well as students.
Left by Correctional Healthcare Services on Jan 06, 2010 1:15 AM

# Reply:

Requesting Gravatar...
Very nice article. Thank you so much for sharing this information. I am sure a lot of people will benefit from it.
Left by Chapel Hill Real Estate on Jan 07, 2010 1:05 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
thank you! That looks like a great resource
Left by William blog on Jan 11, 2010 5:36 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Hi...Your post really got me thinking man..... an intelligent piece ,I must say.
Left by Miami Web Design on Jan 11, 2010 8:55 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Gift Ideas UK is a UK store bringing you a huge range of gift ideas. Gift ideas for men, gift ideas for women, gift ideas for children, and gift ideas for any occasion.
Left by Gift Ideas UK on Jan 14, 2010 6:34 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
thats some great info i love it
Left by make money online on Jan 16, 2010 1:21 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
This kind of stuff is only seen in textbooks and here you freely share them with fellow server technology enthusiasts and the world at large. So, thanks man.
Left by Termite identification on Jan 23, 2010 9:57 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
The beauty of these blogging engines and CMS platforms is the lack of limitations and ease of manipulation that allows developers to implement rich content and 'skin' the site in such a way that with very little effort one would never notice what it is making the site tick all without limiting content and effectiveness.
Left by Online Advertising Agency on Jan 27, 2010 12:05 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
A data centric to a domain driven design is basically typical concept for me but you solve it very easily. Thanks.
Left by skin cancer reconstructive surge on Jan 28, 2010 10:19 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
fantastic! thx!
Left by free samples without surveys on Jan 29, 2010 6:29 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
What's more, a bracelet can also be equipped with different small pandora jewelry and even you can change it according to your mood at any time. Here are some meanings of pendant. Small Plane stands for traveling and adventure ; anchor, stability and hope; your baby's boots, having a lot of babies; small feeding pandora bracelets abundant food; Church means happiness and stability of marriage; dragonfly means riches; Eiffel Tower means travel and exploration; four-leaf clover means fortune; horseshoe means luck; Nest means a happy family; bride shows a happy bride in her coming pandora jewelleryship steering shows calming and confidence; pandora ukcoin shows rich marriage life. Wish bone, dreams being about to come true; pandora charm bracelets, love; one heart shot by an arrow, romantic love; purse, wealth; and heart-shaped lock, true love.kjhjhgfty
Left by kasandra1972 on Jan 29, 2010 12:47 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Thank you so much for this great info. Fantastic!
Left by radio controlled trucks on Feb 01, 2010 2:11 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Thanks, very useful article!
Left by K. Rouwhorst on Feb 05, 2010 2:53 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
A fluent interface to NHibernate - Part 2 - Value Objects.
Left by UGG sale on Feb 07, 2010 10:22 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
I need some more details regarding A data centric design, as I am launching my new site regarding web desiging and internet marketing, I am just seeking some unique information from your side in terms of data centric designs
download brothers
download up in the air
download new moon
download invictus
download the lovely bones
download a single man
download nine
download did you hear about the morgans
download avatar
download the young victoria
Left by Astey on Feb 08, 2010 4:59 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
I will forward this article to him. Pretty sure he will have a good read. Thanks for sharing!
Industrial Engineering Degree | mechanical engineering degree | Online health science degree | Online Nutrition degree | Law School
Left by siomy on Feb 09, 2010 10:02 PM

# weight loss pills

Requesting Gravatar...
Congratulations for that winning shot!
Left by kanchan on Feb 10, 2010 11:37 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
This information is one of a kind and congrats on that winning one!

radio controlled boats

3 Star RC Helicopters

RC Battle Warship
Left by radio controlled boats on Feb 16, 2010 11:46 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Your blog is very nice. I m really impressed .I m waiting for your next post. Hopefully I will get it soon.
Left by Dolce Gabbana Eyeglasses on Feb 16, 2010 8:44 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Very well explained. I found it very simple to understand. Thanks for sharing. Keep it going.
Left by Movers Brooklyn on Feb 17, 2010 7:26 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...

Lot of thanks for this article. Its really a very good topic. Its so interesting and attractive. I like it so much.

Thanks.
Left by Medical Spa New York on Feb 19, 2010 11:17 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Did you know that a twelve month subscription on an adult dating site is equivalent to one or two nights out at a bar or club....
Left by Dating Online on Feb 20, 2010 12:01 PM

# re: Manage SQL Databases

Requesting Gravatar...
Very cheap, very seductive, to echocardiography. Strongly recommended! ! !
panora jewelry
panora jewelrypanora jewelry
panora jewelrypanora jewelry
Left by pandora jewelry pzm on Feb 21, 2010 2:49 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts.
Left by Brochure Printing on Feb 21, 2010 10:59 PM

# re: jordan shoes on sale

Requesting Gravatar...
YS0223L5 when the sun hugs the moon, the sky clses her eyes.when the sun hug the moon the sea quiet her jordans shoes.when the sun hugs the moon,the forest stops her susurrus.when the sun hugs the nike sb dunk high,the desert hodlds her breathe.Thousands of years's waiting is only for this nike acg shoes moment.Never be disappointed.Never give up.It hax been sucha long time.At nike air max 2003 this momentmeet each other in course of time.Do not cry,Moon.I guard you forever.Cause you are in my life,everyting has its meaning.The fascinating Diamond Ring,is the ring i give you,May it give you warm http://www.nikejordanshoes2sell.com/ threduce your tears.Do not cry,Sun,I will be there with you forever/Meeting you has given me precious memeory.The resplendent Baily Beads.is the gem i give you .May i give you cheap air jordan 22 shoes strength, shine in your morning.Meet soon and part soon.It makes peop;e retrospect in spite of lasting a few minutes.A long times waiting is coming.Don't know when the next meeting is .When the sun hugs the Moon. the Moon hugs the sun as well Hugging tightly,regian the lost nicety.
Left by jordan shoes on Feb 22, 2010 2:39 PM

# re: From a data centric to a domain driven design

Left by cheap picture frames on Feb 22, 2010 5:54 PM

# re: From a data centric to a domain driven design

Left by cheap picture frames on Feb 22, 2010 6:16 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Very nice and helpful information has been given in this article. I like the way you explain the things. Keep posting.Thanks.
Left by web design new york on Feb 22, 2010 7:32 PM

# re: From a data centric to a domain driven design

Left by custom essay writing on Feb 22, 2010 10:17 PM

# aion gold

Requesting Gravatar...
Do you know aion gold?if you play the online game, you will know that aion kinahis the game gold, in the game if you had morekinah,you will had a tall level,but if you want toaion online gold,you can come here and only spend a little money then can bought theaion online kinah. Quickly come here.
Left by aion gold on Feb 24, 2010 1:53 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Thanks, its a very good information of sharing and making people know about the activites that are being carried out.I think I can find more useful information here, thanks.
Left by Black Caviar on Feb 24, 2010 8:44 PM

# discount ed hardy women long sleeve shirts sales online

Requesting Gravatar...
YS0225A5 If think you are beaten, you are! If you think you dare noted hardy clothing, you don't! If you want to win but think you can't, It's almost a cinch you won't ed hardy hoodies! If you think you'll lose,you're lost! For out of the world we find.Success begins with a fellow's will,It's all in a ed hardy shirts state of mind! Life's battles don't always go.To the stronger and faster ed hardy coats man,But sooner or later the man who wins,Is the man who thinks he can! When You Belive http://www.edfashionclothes.com/,Many night we've prayed!With no proof anyone could hear!In our heart a hopeful moncler online store song,we barely understood!Now we are not afraid !Although we know there's much to fear!We were moving the moncler jackets mountian long,Before we knew we could!There can be miracles!
Left by discount mens moncler down coat on Feb 24, 2010 9:53 PM

# discount air jordan shoes 25 sales online

Requesting Gravatar...
YS0225A6 When you belive,Though hope is frail.It's hard to kill,Who knows what cheap prada shoes miracles,You can achieve,When you belive! Somehow you will,

You will when you belive new nike air max!And in this time of fear, When prayer so often proves in vain, Hope seems like the http://www.nikeaf1jordanshoes.com/summer birds. Too swiftly flown away, And now I am standing wholesale gucci shoes here.My heart's so full I can't explain.Seeking faith and speaking women's nike shox words I never thought I'd say, They don't always happen when you ask authentic air jordan shoes.And it's easy to give in to your fear. But when you're blinded by your pain!
Left by discount mens moncler down coat on Feb 24, 2010 10:03 PM

# discount air jordan shoes 23 sales online

Requesting Gravatar...
YS0225A7 when the sun hugs the moon, the sky clses her eyes.when the sun hug the moon the sea quiet her jordans shoes.when the sun hugs the moon,the forest stops her susurrus.when the sun hugs the nike sb dunk high,the desert hodlds r breathe.Thousands of years's waiting is only for this nike acg shoes moment.Never be disappointed.Never give up.It hax been sucha long time.At nike air max 2003 this momentmeet each other in course of time.Do not cry,Moon.I guard you forever.Cause you are in my life,everyting has its meaning.The fascinating Diamond Ring,is the ring i give you,May it give you warm http://www.nikejordanshoes2sell.com/ threduce your tears.Do not cry,Sun,I will be there with you forever/Meeting you has given me precious memeory.The resplendent Baily Beads.is the gem i give you .May i give you cheap air jordan 22 shoes strength, shine in your morning.Meet soon and part soon.It makes peop;e retrospect in spite of lasting a few minutes.A long times waiting is coming.Don't know when the next meeting is .When the sun hugs the Moon. the Moon hugs the sun as well Hugging tightly,regian the lost nicety.
Left by discount nike air max shoes sale on Feb 24, 2010 10:30 PM

# discount Ugg Broome Boots in chestnut leather online sales

Requesting Gravatar...
YS0225A8 Before there was no reason in the world,As now there is!The moncler jackets course of water was my only course,My repetitions oceans' sough and swell ugg adirondack boots!My seasons pleasurable,Before there was no reason in the world,As now ths ugg broome boots!To measure time from sleep I rose to sleep,To measure space I pastured on surprise http://www.edhardy-buy.com/,O meadows of resemblances,I was the grove on whose mosaic floors,The moncler online seeds of otherwise were spent,My gods had many arms,I was the Caesar of unmarshaled grass ugg boots!Faustus in the branches,My first ambitions were my sorrows long!Before there was no reason in the world,As now there is!
Left by discount womens moncler jacket on Feb 24, 2010 10:30 PM

# discount christian louboutin sandals online sales

Requesting Gravatar...
YS0226A1 hat your heart has been broken,Hear the words,I'm here, my child,;And know your christian louboutin uk angel has spoken.For even in the darkest hour,When all of discount louboutin shoes hope seems gone,They'll give you strength to live your life,And desire to go on.And if your faith in Heaven, Should ever fade away,They'll help renew your christian louboutin boots spirit, And help you find your way.Even though you're ever filled with doubt, About the christian louboutin pumps life you live,Know that they are there to give you All that they can give.For you see, the Father sent them,Because to Him, you mean so much,That He sent them just for you,my louboutin sale friend,And your life, they will touch.They will always be here,They will never leave your http://www.christianlouboutinshoestore.com/ side;And upon their strength and guidance,You always may rely.Take comfort in their guidance, Draw strength from up above,And know that their sweet presence,Is God's precious gift of love.
Left by cheap christian louboutin shoes on Feb 25, 2010 2:58 PM

# discount women's ugg elsey boots 5596 sales online

Requesting Gravatar...
YS0226A2 If I were a boy again, I wd practice perseverance more often, and never give up a thing because it was ugg australia boots or inconvenient. If we want light, we must conquer darkness. Perseverance can sometimes equal genius cheap ugg boots in its results. “There are only two creatures,” syas a proverb, “who can surmount the pyramids—the eagle and the snail.” If I were a uggs sale boy again, I would school myself into a habit of http://www.topsnowboots.com/ attention; I would let nothing come between me and the subject in hand. I would remember that a good skater never tries to skate in two ugg cardy boots directions at once. The habit of attention becomes part of our life, if we begain early enough. I often hear cheap gucci shoes grown up people say “ I could not fix my attention on the sermon or ugg coquette book, although I wished to do so” , and the reason is, the habit was not formed in youth.
Left by cheap ugg upside boots 5163 on Feb 25, 2010 3:04 PM

# discount Women's ugg adirondack boots II sales online

Requesting Gravatar...
YS0226A3 Hold fast to dreams.For i dreams die. Life is a broken-winged bird,That ugg australia boots can never fly.Hold fast to dreams. For when dreams go,Life is a barren ugg tall boots field, Frozen only with snow !You never know until you try; And you never try unless you really try ugg cardy boot. You give it your best shot; You do the best you can. And if you have done everything http://www.uggsnowbootsbest.com/! In your power,and still,The truth of the uggs argyle knit matter is! That you haven\'t failed at all.When you reach for your dreams,No matter what ugg boots they may be,You grow from the reaching;You learn from the trying;You win from the doing.
Left by cheap ugg classic cardy boots on Feb 25, 2010 3:07 PM

# discount reebok nfl jerseys online sales

Requesting Gravatar...
YS0226A4 A true friend is someone who reahes for your hand and touches your cheap hockey jerseys heart.There's always going to be people that hurt you,so what you have to do is keep on trusting nfl jerseys and just be more careful about who sport jerseys you trust next time around.Make youself a better person and know who you are discount nba jerseys before you try and know someone else and expect them to know you mlb jerseys on sale.Remember:Whatever happens,happens for a reason.How many people actually have 8 true http://www.nfljerseymlb.com/friends Hardly anyone I know.But some of us have all right friends and good friends.
Left by cheap adiads nba jerseys sale on Feb 25, 2010 3:10 PM

# discount ugg sienna miller boots 5818 sales online

Requesting Gravatar...
YS0226A9 Unwd still, lover by lover,They paddle in the cold,Companionable ugg australia shoes streams or climb the air;Their hearts have not grown old;ugg coquette Passion or conquest, wander where they will, Attend upon them still ugg adirondack boots. But now they drift on the still water, Mysterious, beautiful; Among what http://www.uggboots4buy.com/ rushes will they build, By what lake’s edge or pool,Delight men’s mbt shoes eyes when I awake some day.To find they have flown uggs classic cardy away?Before there was no reason in the world As now there is I was the bough bent easy by a ugg boots bird I was the vague blue-grazing flock The sleeping and invisible!
Left by cheap women's ugg elsey boots on Feb 25, 2010 3:14 PM

# discount mens air jordan shoes 13 online sales

Requesting Gravatar...
YS0226A10 When you are old and gray nd full of sleep,And nodding by the moncler jackets fire, take down this book! And slowly read jordans sheoes , and dream of the soft look,Your eyes had once, and of their cheap nike shoes shadows deep;How many loved your moments of glad grace,And loved your beauty with nike air force 1 love false or true; But one man loved the pilgrim soul in you,And http://www.onestop-onlineshopping.com/ loved the sorrows of your changing face; And bending down beside the designer clothing glowing bars,Murmur, a little sadly, how love fled.And paced upon the mountains overhead discount air jordan shoes,And hid his face amid a crowd of stars.
Left by cheap nike air max 90 online on Feb 25, 2010 3:24 PM

# discount louis vuitton damier canvas handbags online sales

Requesting Gravatar...
YS0226A11 Surrounding you are ange,They are there to guide your path.If designer purses weaesskn overcomes you,They'll give you strength if you will ask. They are your protection.When discount designer bags on sale life seems too hard to bear,And though you feel alone at times, The louis vuitton 2009 angels ... they are there.Their faces may be hidden And their voices you might not hear,But they are ALWAYS with you,Through your laughter or your tears.http://www.handbags4buy.com/ They'll walk along beside you,They'll guide your leather handbags steps along the way, They'll comfort you and hold you,Protect you dior handbags night and day.They'll hold to your hand tightly ,They'll not ever let it go,And they'll gently lead you cheap designer handbagsforward,Taking each step very slow.For even as you slumber,They watch closely over you;They are there beside you. In each and every thing you do.
Left by cheap nike air max 90 online on Feb 25, 2010 3:27 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Great stuff for students!
Left by Buy essays on Feb 27, 2010 1:32 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...

wedding dresses,wedding gowns,bride dresses,bridesmaids dresses,evening dresses,bridal gowns,flower girl dresses
Wedding Gowns
Formal Gowns
Cocktail Gowns
Find the wedding dress designer and wedding dress that's right for you! Browse dresses from
Bridesmaid Gowns
Evening Gowns
View our selection of exquisite, handmade gowns and dresses for your wedding
Wedding Dresses, Wedding Shoes and Wedding Accessories from wedding shop, the UK's finest collection of designer wedding dresses.
Use the wedding dress and
cheap wedding
wedding dresses
wedding shop
aaa
Left by sbb on Feb 27, 2010 10:06 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
I need some more details regarding A data centric design, as I am launching my new site regarding web desiging and internet marketing, I am just seeking some unique information from your side in terms of data centric designs. Though there are many designers to whom I know, I am looking for some detailed guide.
Left by auto insurance on Feb 28, 2010 5:04 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...
the articl structured well,the pictures make people see more clearly
classifieds |jobs|iphone repair
Left by iphone repair on Feb 28, 2010 7:06 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Thanks for the posts!
Left by chondroitin MSM on Mar 02, 2010 8:21 AM

# re: From a data centric to a domain driven design

Requesting Gravatar...

wedding dresses,wedding gowns,bride dresses,bridesmaids dresses,evening dresses,bridal gowns,flower girl dresses
Wedding Gowns
Formal Gowns
Cocktail Gowns
Find the wedding dress designer and wedding dress that's right for you! Browse dresses from
Bridesmaid Gowns
Evening Gowns
View our selection of exquisite, handmade gowns and dresses for your wedding
Wedding Dresses, Wedding Shoes and Wedding Accessories from wedding shop, the UK's finest collection of designer wedding dresses.
Use the wedding dress and
cheap wedding
wedding dresses
wedding shop


aaa
Left by sbb on Mar 02, 2010 7:57 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
thx for sharing! ill bookamrk ur site!
Left by carp fishing tackle on Mar 03, 2010 10:50 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
thx! ive looking for it
Left by How i get free Motorola Droid on Mar 05, 2010 12:00 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
Very entertaining subject, I will bookmark your website to check out if you publish more in the future.
Left by ucvhost on Mar 06, 2010 2:13 AM

# ugg boots

Requesting Gravatar...


they are very good and useful!!!
ugg outlet
cheap uggs
nike shoes
wholesale watches 2646
Left by ugg boots on Mar 07, 2010 5:31 PM

# re: From a data centric to a domain driven design

Requesting Gravatar...
f23f It’s hard to find knowledgeable people on this topic, but you sound like you know what you’re talking about! Thanks Don’t stop writing, you’ve given me lots of good info! Youtube to MP4 Converter
Convert PDF to image .
Left by powerpoint on Mar 08, 2010 2:38 PM

Your comment:

 (will show your gravatar)
 
Please add 1 and 6 and type the answer here: