A Repository method that reads data can execute outside of a transaction; however, Repository data read in this way can include partial updates from an active transaction. To ensure that data read from the Repository does not include partial updates from active transactions, put read requests into a transaction.
Otherwise, if you bracket your reads within a transaction and your Repository database is a Microsoft Jet database, you risk overloading the cache. Microsoft Jet uses an in-memory cache to speed up query processing. Cached data is not released until the transaction is committed. If your Repository application is reading a large amount of data, and you are performing the reads within the scope of a transaction to isolate them from the uncommitted changes of other applications, the Microsoft Jet cache can grow so large that it causes the application to fail. To avoid this, commit your transaction periodically (even though it is a read-only transaction).