domain-driven-design

Is it possible to create a domain model for legacy code without refactoring?

I currently have a client that wants me to 'abstract' out a domain model from the existing code but they specifically said that I shouldn't refactor the existing code itself. My question is 1) whether or not this is advisable and 2) what techniques would you apply in this scenario if you can't refactor the code yet they expect you to com...

DDD Modeling questions : student, classroom, seats and a favorite seat for a student.

Hi, i'm not sure how to model this relationship... A classroom contains many seats, every student studies in a classroom and have a favorite seat within it. The way i see it, i have two aggregate roots: classroom and student, seats a are entities aggregatged by classroom... And for a student to have a fovorite seat, it must hold a ref...

How to model a relationship that NHibernate (or Hibernate) doesn’t easily support

I have a situation in which the ideal relationship, I believe, would involve Value Object Inheritance. This is unfortunately not supported in NHibernate so any solution I come up with will be less than perfect. Let’s say that: “Item” entities have a “Location” that can be in one of multiple different formats. These formats are comp...

How to design a data model that deals with (real) contracts?

I was looking for some advice on designing a data model for contract administration. The general life cycle of a contract is thus: Contract is created and in a "draft" state. It is viewable internally and changes may be made. Contract goes out to vendor, status is set to "pending" Contract is rejected by vendor. At this state, nothing ...

ORM Persistence by Reachability violates Aggregate Root Boundaries?

Most common ORMs implement persistence by reachability, either as the default object graph change tracking mechanism or an optional. Persistence by reachability means the ORM will check the aggregate roots object graph and determines wether any objects are (also indirectly) reachable that are not stored inside it's identity map (Linq2Sq...

Saving complex aggregates using Repository Pattern

We have a complex aggregate (sensitive names obfuscated for confidentiality reasons). The root, R, is composed of collections of Ms, As, Cs, Ss. Ms have collections of other low-level details. etc etc R really is an aggregate (no fair suggesting we split it!) We use lazy loading to retrieve the details. No problem there. But we are s...

DDD: Aggregate Roots

Hello, I need help with finding my aggregate root and boundary. I have 3 Entities: Plan, PlannedRole and PlannedTraining. Each Plan can include many PlannedRoles and PlannedTrainings. Solution 1: At first I thought Plan is the aggregate root because PlannedRole and PlannedTraining do not make sense out of the context of a Plan. The...

CQRS - how to handle new report tables (or: how to import ALL history from the event store)

I've studied some CQRS sample implementations (Java / .Net) which use event sourcing as the event store and a simple (No)SQL stores as the 'report store'. Looks all good, but I seem to be missing something in all sample implementations. How to handle the addition of new report stores / screens, after an application has gone in producti...

OOP App Architecture: Which layer does a lazy loader sit in?

I am planning the implementation of an Inheritance Mapper pattern for an application component http://martinfowler.com/eaaCatalog/inheritanceMappers.html One feature it needs to have is for a domain object to reference a large list of aggreageted items (10,000 other domain objects) So I need some kind of lazy loading collection to be p...

In a DDD approach, is this example modelled correctly?

Just created an acc on SO to ask this :) Assuming this simplified example: building a web application to manage projects... The application has the following requirements/rules. 1) Users should be able to create projects inserting the project name. 2) Project names cannot be empty. 3) Two projects can't have the same name. I'm using...

Testing system where App-level and Request-level IoC containers exist

My team is in the process of developing a system where we're using Unity as our IoC container; and to provide NHibernate ISessions (Units of work) over each HTTP Request, we're using Unity's ChildContainer feature to create a child container for each request, and sticking the ISession in there. We arrived at this approach after trying o...

Sample application to showcase best practices in Asp.Net?

Is there a sample application to demonstrate best practices for Asp.Net? I am looking for something like SharpArch (for Asp.Net)? ...

What is the best way to use EF 4 and DDD

I would like to use EFf 4 as my ORM in my DDD project. I am going to generate my model based on my classes. Should I create classes that are basically dto objects for my business objects to consumer or should I implement the actuall BO classes in my EF model? ...

Domain-driven design with Zend

This question is a continuation of my previous question here http://stackoverflow.com/questions/2122850/zend-models-architecture (big thanks to Bill Karwin). I've made some reading including this article http://weierophinney.net/matthew/archives/202-Model-Infrastructure.html and this question http://stackoverflow.com/questions/37...

How to code a C# Extension method to turn a Domain Model object into an Interface object?

When you have a domain object that needs to display as an interface control, like a drop down list, ifwdev suggested creating an extension method to add a .ToSelectList(). The originating object is a List of objects that have properties identical to the .Text and .Value properties of the drop down list. Basically, it's a List of Select...

DDD: Client-side script to enforce invariants

Hello, One thing that I'm confused about in regards to DDD is that our domain is supposed to handle all business logic and enforce invariants. I have noticed some people (me included) handle certain invariants in the presentation layer (i.e. WebForms, Views, etc) with javascript. This is mainly done to improve performance so the server...

DDD: Persisting aggregates

Hello, Let's consider the typical Order and OrderItem example. Assuming that OrderItem is part of the Order Aggregate, it an only be added via Order. So, to add a new OrderItem to an Order, we have to load the entire Aggregate via Repository, add a new item to the Order object and persist the entire Aggregate again. This seems to hav...

DDD - Identifying entities, roots and services

Hello. I want to apologize for my bad english first. I am trying to implement DDD in my project, but I have some problems I will try to describe. I am developing a chat application. Front-end is quite simple, no rooms, just one window showing last n messages. Here comes the first problem. I don't see any entity here (ChatRoom would be...

Silverlight 4 with WCF RIA architecture applying DDD

Hello, In my ASP.NET MVC applications I use DDD and it works very well. I'm new to Silverlight development and would like to know how could I apply DDD to build a new architecture. I had a look on WCF RIA Services and what is exposed by default it's the simple CRUD methods. I would like to use MVVM pattern. I thought about general arch...

Best practice for building a composite data transfer object (DTO) with Domain Driven Design (DDD)

I'm trying to figure out the best approach/practice for assembling a composite data transfer object off of an aggregate root and would love to hear people's thoughts on this. For example, lets say I have a root that has a few domain objects as children. I want to assemble a specific view dto, based on some business logic, that either ha...