Где разместить базу данных для визуальных студийных решений для сборки и щелкнуть один раз после развертывания? - PullRequest
1 голос
/ 25 ноября 2011

Я пишу приложение, которое будет обращаться к локальной базе данных (MS Access) в качестве кэша для удаленного сервера SQL.

У меня есть проект "логика" и проект "UI". Файл .accdb в настоящее время находится в проекте пользовательского интерфейса и действие сборки настроено на содержимое, скопируйте, если оно более новое. Тем не менее, это почему-то кажется действительно неправильным, но я не уверен, как правильно систематически обращаться с ним.

Должен ли я создать проект базы данных? Но, честно говоря, я совершенно невежествен, когда дело доходит до проектов баз данных, и не уверен, с чего начать обучение. Кроме того, параметры, доступные в Visual Studio, похоже, основаны только на SQL.

Я думаю, что, может быть, мне следует создать новый проект, добавить в качестве содержимого файл .accdb, а в проект добавить код для обновлений версий, миграции, обновлений схемы, которых в настоящее время нет в решении.

Куда мне идти?

Ответы [ 2 ]

2 голосов
/ 25 ноября 2011

Я думаю, вам следует использовать опцию по умолчанию: Copy To Output Directory=copy if newer' таким образом, сборка будет копировать этот файл всякий раз, когда вы создаете свой проект.

1 голос
/ 25 ноября 2011

В целях создания четкого разделения обязанностей разместите свой доступ к данным где-то, кроме вашего пользовательского интерфейса проекта;т.е. в отдельном проекте.Затем ваш проект пользовательского интерфейса будет использовать проект доступа к данным для выполнения соответствующих действий с данными.

Извлеките интерфейс (IDataAccess или что-то еще), о котором ваш проект пользовательского интерфейса знает, и ваш проект доступа к данным реализует.Вы можете поместить интерфейс в другой проект (например, назовите его ShareInterfaces), на который ссылается и реализует ваш код пользовательского интерфейса, а также проект доступа к данным.Затем вы можете использовать Dependency Injection в своем коде пользовательского интерфейса, чтобы получить реализацию IDataAccess.

Существует множество интегрированных сред с открытым исходным кодом (или IoC, как его иногда называют).Я использовал Ninject ранее, и он очень хорошо работает для простых случаев - нет необходимости в настройке XML, вы можете декларативно выполнять всю привязку в коде.

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

...