Skip to Content
.NET Domain-Driven Design with C#: Problem – Design – Solution
book

.NET Domain-Driven Design with C#: Problem – Design – Solution

by Tim McCarthy
April 2008
Intermediate to advanced
430 pages
10h
English
Wrox
Content preview from .NET Domain-Driven Design with C#: Problem – Design – Solution

Chapter 4. Companies and Contacts

Last Chapter I showed how both Companies and Contacts were part of the Project Aggregate. Since the focus was on the Project Aggregate, not much was done with these two Entities. This chapter, I will dive in and take a deeper look at the Company and Contact Aggregates, and I will show how they relate to the Project Aggregate.

The Problem

One of the problems with the legacy application is that it does not handle tracking Companies, Contacts, and their associated Addresses very well. The current system does not allow multiple Addresses per Company or Contact, and as a result the users are often entering the same Companies and Contacts into the system as duplicate records in order to show a different Address for the Company or Contact.

With that being said, it sounds like a database issue of having denormalized data. It is not the point of this book to dwell on the database design; I believe that the focus of the problem needs to be on the domain model. If the domain model is designed properly, it can handle this problem. Remember, one of the tenets of Domain-Driven Design, which I discussed in Chapter 2, is persistence ignorance. Therefore, the application's data store could be a text file for all I care, because it is abstracted away by the Repository Framework.

The Design

In the SmartCA domain, the purpose of a Project is to bring together and manage all of the people involved in the construction process. In the next few sections, I will be designing ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Design Patterns in .NET: Reusable Approaches in C# and F# for Object-Oriented Software Design

Design Patterns in .NET: Reusable Approaches in C# and F# for Object-Oriented Software Design

Dmitri Nesteruk
Hands-On Design Patterns with C# and .NET Core

Hands-On Design Patterns with C# and .NET Core

Gaurav Aroraa, Jeffrey Chilberto

Publisher Resources

ISBN: 9780470147566Purchase book