Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определение пути к БД, не зависимо от способа запуска приложени 
V
    Опции темы
Gluttton
Дата 23.9.2010, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 2
Всего: 54



Доброго времени суток!

Есть приложение, которое обращается к БД (Firebird), работа ведеться через ADO.NET.
Прои формировании строки подключения указываю следующий путь к БД:
Код

            ...
            FbConnectionStringBuilder CSBuilder = new FbConnectionStringBuilder ();
            CSBuilder.DataSource = "127.0.0.1";
            CSBuilder.Database = AppDomain.CurrentDomain.SetupInformation.ApplicationBase+"App_Data/db.fdb";
            CSBuilder.Port = 3050;
            ...

Который при выполнении программы "разворачивается" в:
Цитата

/home/vm/solution/project/App_Data/db.fdb

Т.е., то что и нужно.

Но при запуске Unit-тестов путь "разворачивается" в:
Цитата

/home/vm/solution/projectTest/bin/App_Data/db.fdb

Т.е. не верно (там БД нет).

Вопрос: как сделать так, что бы путь к БД определялся безошибочно, во всех случаях.

Вижу такие варианты (не устраивает ни один):
1. Написать "жестко" путь (считаю это не удачным решением).
2. Добавить условие и парсить путь, по которому запущено приложение и по "особым приметам" пытаться понять откуда запущено приложение и "подсовывать" уточненный путь к БД (какой то очень запутанный и наверное не надежный способ).
3. Генерировать еще одну БД (в принципе не сложно, но ведь это не выход).
4. Ваш вариант smile ?


--------------------
Слава Україні!
PM MAIL   Вверх
jonie
Дата 24.9.2010, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



Assembly.GetExecutedAssembly().Location - определять относительно него?


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
mrbrooks
Дата 24.9.2010, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 17
Всего: 306



Цитата(Gluttton @  23.9.2010,  22:39 Найти цитируемый пост)
Ваш вариант

1. если подразумевается что база юзается в корневом каталоге то я бы использовал Environment.CurrentDirectory
2. ни разу не будет преступлением указывать путь к БД (я так понимаю файл-серверной ) в настройках программы. Это гибче.

PM MAIL   Вверх
Gluttton
Дата 24.9.2010, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 2
Всего: 54



jonie, mrbrooks, спасибо, что откликнулись!

Спасибо за предложенные варианты, но они не смогли удовлетворить мои извращенные требования.

В качасестве решения вопроса наиболее нормальным мне показалось применение алиаса для БД - на том и остановился.

Но как я теперь прихожу к выводу написанный мною тест, который пытается подключиться к БД не является "юнит". И то, что он не сработал корректно, то это даже лучше, так как заставило меня задуматься над тем, что же я такое пытаюсь протестировать.


--------------------
Слава Україні!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0640 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.