I tend to use a data access assembly and test that with NUnit using the idea outlined in
http://weblogs.asp.net/rosherove/articles/dbunittesting.aspx
it uses transactions to rollback changes. This is not a dedicated database approach but is good if you want to test at a higher level than pure database.
It may be worth having a look at http://weblogs.asp.net/rosherove/archive/2004/07/12/180189.aspx