title: ASP.NET C#: Caching Database Results, When/How Invalidate (on per-record basis)
body: <p>my application shows contact information (from approx. 2000 contact records with various detail information (names, phone numbers etc.) that form the base of a contact grid) which typically rarely changes.</p>
  
  <p>A good number of users have the authority to edit this information though, and if it is edited, it is required that the change be visible immediately to everybody.</p>
  
  <p>At the same time I'd like to limit refetching this information from the database every time anybody views this information, especially because days might go by without any change happening.</p>
  
  <p>I could refetch the entire list every time a minute change is made, but that doesn't seem the right way either. So I'm looking for a way to cache everything, invalidate &amp; refetch only a part that is changed (say, one record) while keeping everything else cached. The page would primarily feed off the cache then every time it is viewed, and fetching data becomes an exception.</p>
  
  <p>How could I go about this design &amp; code wise? Your help is very much appreciated.</p>