I’m wondering what the best way to implement this would be.
Basically our project has a requirement that any change made to records in the database should be logged. I already have it completed in C# using Reflection and Generics but I’m 100% sure that I used the best method.
Is there a way to do this from inside the SQL database?
The big key is that the way our project works, the ObjectContext is disconnected, so we couldn’t use the built in Change Tracking and had to do our own compares against previous Log items.
If you’re using SQL Server 2008 or higher, you can implement either change tracking or change data capture directly on the database. Note that the latter is only available in the Enterprise edition engine. There are pros and cons to each method. You’ll have to review each solution for yourself as there isn’t enough requirement information to go on in the question.
If you’re using SQL Server 2005 or below, you’ll have to resort to a trigger-based solution, as suggested by the other answers.