The old school way uses polling. The .net framework will check a table to see if it has changed data since the last time it was polled. If it has changed, .net will clear the cached data so the next time its requested it will be retrieved from the database again, instead of using the cached data.
The new school way to do the same thing is to have the database engine notify the .net application by leveraging Event Notifications subsystem within SQL Server. This way as soon as a cached object is invalidated by database activity the application will be notified, I.e. No polling.
There are no special teachers of virtue, because virtue is taught by the whole community. --Plato