The thing they have in common is the Database. So use Database cache invalidation. There are newer techniques available in newer versions of SQL Server and Visual Studio. But you can always use the old standby of polling a "change table" in the DB. If the "changeid" is the same as the last time you polled you leave the item in the cache. Whenever a table is edited in the DB a trigger runs to modify the changeid in the change table. (If it happens to be one of the ones you want to monitor for changes.) You actually cache a small item and then tie your BO to it as a cache dependency object. So when you clear your small item (because the table in the DB changed and the changeid was incremented) the real BO leaves the cache with it.
There are lots of articles on this technique. I think I modified the one suggested by Peter Bromberg about 4 years ago.
Joe
Copyright (c) Marimer LLC