I have a multi-step registration process, backed by a single object in domain layer, which have validation rules defined on properties.

How should I validate the domain object when the domain is split across many views, and I have to save the object partially in the first view when posted?

I thought about using Sessions but that's not possible cause the process is lengthy and amount of data is high, So I don't want to use session.

I thought about saving all the data in an relational in-memory db (with the same schema as main db) and then flushing that data to main db but issues arisen cause I should route between services (requested in the views) who work with the main db and in-memory db.

I'm looking for an elegant and clean solution (more precisely a best practice).

UPDATE AND Clarification:

@Darin Thank you for your thoughtful reply, That was exactly what I've done till now. But incidentally I've got a request which have many attachments in it, I design a Step2View e.g. which user can upload documents in it asynchronously , but those attachments should be saved in a table with referential relation to another table that should have been saved before in Step1View.

Thus I should save the domain object in Step1 (partially), But I can't, cause the backed Core Domain object which is mapped partially to a Step1's ViewModel can't be saved without props that come from converted Step2ViewModel.

Edit
Report