Создать базу данных из файла edmx entity 3.5 программно - PullRequest
3 голосов
/ 07 мая 2011

Я хочу создать базу данных программно из файла edmx или edmx.sqlce в моем проекте. Я читал лучшие практики при отправке данных пользователям, это лучший способ. Но я ничего не нашел на этом. Или лучше создать его и отправить вместе с программой? Как бы я сделал обновления базы данных, если бы я сделал это? Как мне узнать, какая версия базы данных?

Извините за несколько вопросов в одном. Я новичок в программировании / базах данных, поэтому я не знаю, как это обычно делается, и, похоже, не могу найти книгу об этом.

1 Ответ

3 голосов
/ 07 мая 2011

В этом сценарии рекомендуется создать установочный пакет (.msi), который установит ваше приложение и выполнит сценарий для развертывания базы данных.Скрипт может даже проверять зависимости, такие как SQL Server CE и .NET Framework.Это также решит вашу проблему с версией базы данных, потому что установочный пакет .msi хранит эту информацию, поэтому вы можете создать обновление .msi, которое будет знать, что он должен выполнять только сценарий изменения для базы данных, а не создавать новый.Имейте в виду, что создание инсталляционных пакетов - довольно сложная задача, но именно так это делается в реальных продуктах, поставляемых клиентам.Как в моей текущей, так и в предыдущей компании мы использовали WiX для создания установочных пакетов, но у нас есть специальный парень, который делает это.

Нет API для создания базы данных из файла EDMX.Кроме того, файл EDMX не является частью встроенного приложения.Генерация базы данных - это особенность VS2010, которая использует рабочий процесс или шаблон T4 для преобразования EDMX в сценарий SQL.Шаблон по умолчанию может создать только полный сценарий базы данных, и вы должны выполнить его.

Я описал способ создания сценария развертывания для новой версии базы данных в отдельный вопрос .Это связано с первым кодом (EFv4.1), но принцип тот же.Если вам нужно сохранить информацию о версии базы данных, вы можете создать для нее специальную таблицу и проверить значение в таблице в начале сценария обновления.

...