Hi,
Usually modules are decoupled from each other thanks to the use of interfaces. However, this might not be completely applicable with models, specially if you are usingEntity Framework as most models are related to each other.
In my opinion, I would move all the models (Clients, Referrals, Appointments, etc.) to a separate project. This project would not be aPrism module but a common .NET project that could be referenced by the corresponding modules. For example, the application could be structured like this:
- Shell - Has a reference to Models with CopyLocal = true.
- DataAccessLayerModule - Has a reference to Models with CopyLocal = false. It could export services to interact with theDB and populate models.
- ClientsModule - Has a reference to Models withCopyLocal = false. It contains the views/view models regarding clients, etc.
- ReferralsModule - Has a reference to Models with CopyLocal = false. It contains the views/view models regarding referrals, etc.
- AppointementsModule - Has a reference to Models with CopyLocal = false. It contains the views/view models regarding appointments, etc.
- Models - A simple project (not a Prism module) containing theModels used in the application.
Like this, the Models can keep their relationships between each other inside a common project referenced by any module that needs them. However, take into account that this is only a possible approach and you might need to structure your application differently depending on the requirements of your scenarios or according to your personal preferences.
I hope you find my opinion useful,
Damian Cherubini
http://blogs.southworks.net/dcherubini