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

Your comment:

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