- DataContext for writes, DDD support (Value Objects, domain model rules validation, persistence ignorance)
- IReadOnlyDatabaseContext for reads, only read collections exposed
- Segregating the read and write sides mean maintainable and flexible models. Most of the complex business logic goes into the write model. The read model can be relatively simple.
- It's easier to ensure that only the right domain entities are performing writes on the data.
- Easly to split into WRITE and READ databases