Снова запутался - строка подключения.
Делаешь проперти ConnectionString виртуальной и в тестах, где тебе надо заменить БД на тестовую, просто меняешь возвращаемое значение.
-----
Ну это Я делаю и без виртуальности.
Ааа... кажется понял что ты имеешь в виду - сделать несколько имплементаций калассов с FillDataTable & virtual ConnectionString и подставлять нужный в каждый отдельный момент.
Увы, но - не решение - просто проблема выбора нужной коннектион стринг заменена проблемой выбора нужного класса.
Сама проблема - осталась.
Поясню:
app.config
<connectionStrings><add name="dbConnection" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=Nenagh)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED).../>
</connectionStrings>
в части тестов строка подключеня заменяется на
<connectionStrings><!-- DO NOT IN ANY CIRCUMSTANCES POINT Tests TO LIVE DATABASE - TESTS ARE DESTRUCTIVE -->
<add name="dbConnection" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=SandBox)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED) .../>
</connectionStrings>
Строка лежит в другом конфиге и читается отдельно.
Это - работает без проблем - в нужных тестах могу принудительно заменить одно на другое. И кешь мне в этом помогает - просто грубо меняю значение в кеше и все остальное работает без изменений.
На вебе немного по-другому.
web.config 1:
<connectionStrings><remove name="dbConnection" />
<add name="dbConnection" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=Nenagh)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED) .../></connectionStrings>
web.config 2:
<connectionStrings>
<remove name="dbConnection" />
<add name="dbConnection" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=Lurgan)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED) .../>
</connectionStrings>
Здесь - строка заменяется - делается автоматически веб-сервером, но нет (не знаю, не нашел) нотификации. Если Я буду читать конфиг - получу нужное значение.
А читать Я не могу т.к. значение уже - требование подмены в тестах - кешировано - могу только переписать.
А проверять, как в тестах, где именно Я нахожусь - возможности нет - страница одна и та же, просто копия лежит в папке с другим конфигом и менять это не желательно. Да и дотятуться туда не просто - дизайнил чтобы было нельзя.
Т.е. Я не знаю нужно мне пользовать кеш или нужно читать конфиг. И возможности установить это вроде нет.
Хотя... принудительно перечитать конфиг и переписать коннектион в бизнес-объекте веб-страницы? Ну может быть... жал' что работа дублируется...
