What approach you take is probably going to depend on the bigger picture of what you are trying to achieve.
If you want a framework that does the work for you EMF-Transaction is worth looking at. Access to the model is achieved through transactions and there is support for read-only transactions.
If you want something lighter you could get your emf objects to implement read-only interfaces. It shouldn't be too much work to add a template to automatically generate these for you if you wished.
Tas