Как создать пустые локальные базы данных на основе существующего файла .sdf на VS2008 и SQL Server CE - PullRequest
4 голосов
/ 21 января 2009

Я хотел бы использовать Visual Studio 2008 IDE для редактирования схемы локальной базы данных для базы данных SQL Server Compact 3.5. Однако все в документации и в пользовательском интерфейсе, кажется, предполагает, что приложение / сборка хочет использовать только одну базу данных и никогда не хочет создавать новые на основе существующей схемы.

Я бы хотел иметь возможность редактировать схему БД с помощью визуальных инструментов, а затем иметь механизм для создания новых файлов базы данных на основе отредактированной схемы. Таким образом, каждый документ, который создает мое приложение, будет храниться в своих собственных отдельных файлах базы данных (.sdf). Кроме того, для модульного тестирования я хотел бы иметь возможность создавать пустые временные файлы .sdf для запуска своих модульных тестов в пустой базе данных.

Единственный способ, которым я знаю, как создавать новые пустые базы данных с использованием существующей схемы, это просто скопировать мой основной файл .sdf в новый файл.

Каков рекомендуемый способ создания новых файлов .sdf с использованием кода C #? То есть, как реализовать MyModel.Create ("foo.sdf"), чтобы он создавал файлы .sdf, используя схему, созданную в Visual Studio.

РЕДАКТИРОВАТЬ : После долгого расследования я полностью прекратил работу редактора .sdf локальной базы данных VS2008 и начал создавать новые файлы .sdf с помощью LINQ-to-SQL. Теперь я просто указываю несколько классов C #, комментирую их для работы с LINQ-to-SQL и создаю новые файлы базы данных, вызывая метод CreateDatabase моего DataContext. На MSDN есть хороший документ: Как: динамически создать базу данных (LINQ to SQL)

1 Ответ

3 голосов
/ 21 января 2009

Создайте базу данных "model.sdf", которая содержит схему и, возможно, необходимые исходные данные. Если вы хотите создать новую базу данных, вы создаете копию этой модели.

Вы также можете создать Sql-DDL из существующей базы данных ( альтернативная ссылка ), затем создать пустую базу данных и выполнить на ней этот SQL. Это будет намного медленнее.

...