Что ж, под изменением базы данных я предполагаю, что вы имеете в виду изменение dbms, например, с сервера sql на oracle.
Я сомневаюсь, что вы найдете решение, позволяющее сделать это без каких-либо изменений кода, но вы можетесделать все намного проще, используя интерфейсы для всех ваших служб.
Например,
public interface IDataRepository
{
...
}
public class SqlServerDataRepository : IDataRepository
{
...
}
и для тестирования
public class MockRepository : IDataRepository
{
...
}
и более поздних версий, если вы используете базы данных
public class OracleRepository : IDataRepository
{
...
}
Это можно затем использовать просто, ссылаясь на интерфейсы
public class MyService
{
public MyService(IRepository repo)
{
//ctor
{
}
И в идеале вводя объекты с помощью Inversion of control, Ninject или структурной карты, например.
Извинения, если этоэто все уже известно вам и вашему поиску чего-то другого!