The recommended recommendation is to use an activation model for each call in WCF and completely disable services.
This means: every time the client makes a request, an instance of the service implementation class will be created on the server side, the requested service call will be executed, and then the service class will be destroyed again.
Therefore, placing the initialization code in the constructor of the service implementation class will be a very bad idea - it will be executed for each individual request.
What you can do is to have some kind of logic (either in your service class, or some kind of support code, for example, some kind of admin interface) that will load the tables you want to cache into a permanent cache, for example . something like an AppFabric cache. After several requests are processed for processing service instances, this shared cache can be used to improve performance.
source share