I think for your case a second level cache should solve. Entity Framework has a package that implements this. You can download it here.
According to the developer’s blog, the setup is quite simple. Put in your configuration class the following:
public class Configuration : DbConfiguration
{
public Configuration()
{
var transactionHandler = new CacheTransactionHandler(Program.Cache);
AddInterceptor(transactionHandler);
Loaded +=
(sender, args) => args.ReplaceService<DbProviderServices>(
(s, _) => new CachingProviderServices(s, transactionHandler));
}
}
This alone makes your system more fluid without the need for base replication. However, if the base grows more and demand grows more, there is no magic: we need to invest in infrastructure.