@Ciary
Web applications (like an ASP.NET web application) are stateless apps.
This is rather limiting....let's examine this a bit:
ASP.NET applications exist on a Web Server. They are compiled (unless they are already precompiled) and executed when a browser makes a request that involves them.
The ASP.NET application
does stuff (like retrieves things from databases etc) and then sends a the resulting response (a web page) to the browser...which displays the web page to the end user.
Now the admin makes a change database...and your data access layer raises an onDatabaseChange event....
Even if your ASP.NET application was listening for the event, what is it supposed to do with it?
The only way that the ASP.NET application can send information to the browser is if a request was made to it in the first place... Otherwise how would it know where (what browser, what IP) to send it to? How would it even send the response if the web browser isn't waiting for a response from the server?
Since it can't know these things, it can't do anything with the event...it can't update any web browsers currently displaying the web page because it simply cannot do this without a request from the web browser for the page.
My point here is if you are developing a web application (you never stated the type of app you're developing) it doesn't matter if the database has changed until a web browser makes a request to the web application.
The onDatabaseChange event is not needed if you implement the web application so that it accesses a live database (which contains the updated information) on every request is made by the browser.
This would mean that you would not cache the data retrieved from the database first time the page is loaded.
There is a neat way to cache your data...in ASP.NET though.
See:
It's a lot easier if you just simply use a live database and refresh your data on every web request.
In order to achieve what you are attempting (updating all browsers displaying the web page when the database is updated), you'd have to constantly ask the server for an updated list. You'll have to have some sort of client side (JavaScirpt/Ajax) timer that pings the server constantly since the web server cannot send a response to a browser without the browser asking for it. This is probably not a good idea because it's going to waste bandwidth and server resources.