EF4 Создать базу данных - PullRequest
4 голосов
/ 06 мая 2010

Я изо всех сил стараюсь найти простейший способ создания базового примера структуры объекта «сначала модель». Однако я борюсь с фактическим созданием базы данных, особенно запуском SQL против базы данных.

Инструменты

  • Visual Studio 2010
  • SQL Server 2008 Express

Процесс

  1. Создать новый проект класса
  2. Добавление нового элемента базы данных сервера (mdf) с именем «Database1.mdf» в проект
  3. Добавить пустую модель сущности ADO.net
  4. Создать простую сущность (Person: Id, Name)
  5. Генерация скрипта, выбирающего соединение с Database1, созданное для меня visual studio
  6. Щелкните правой кнопкой мыши редактор сценариев и выберите параметр «Выполнить SQL ...»
  7. Войти в SQLEXPRESS

Это тот случай, когда он говорит, что не может найти имя базы данных "Database1".

«Проблема» в том, что к серверу SQL не была подключена база данных Database1. Я на 100% уверен, что Visual Studio использует для присоединения базы данных к SQLExpress при создании новой базы данных (шаг 2). Похоже, что это уже не так (даже бета-версия VS2010 сделала это). Кто-нибудь может это подтвердить? или подскажите как это сделать?

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

Я знаю, что могу использовать SQL Management Studio или sqlcmd для присоединения базы данных, но в идеале я бы хотел избежать решений, так как хотел бы увидеть самый чистый способ использования Visual Studio.

Идеальные решения (в порядке наиболее предпочтительных)

  1. Получить Visual Studio для присоединения вновь созданной базы данных
  2. Изменить сгенерированный SQL так, чтобы он указывал на файл

Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 19 ноября 2010

Метод, который я нашел для последовательной работы (по крайней мере, с VS 2010 и SQL Server (2008 | 2008 R2) Express), заключается в следующем:

  1. Создание модели сущности ADO.NET
  2. Создайте базу данных .mdf, но не добавляйте в нее таблицы
  3. Скопируйте строку подключения из обозревателя серверов -> Изменить подключение -> Дополнительно (нижний ряд)
  4. Закрыть соединение в обозревателе серверов
  5. Создание сценария SQL с помощью «Создание базы данных из модели»
  6. Когда сценарий SQL открыт в редакторе, нажмите «Подключиться», затем выберите «Параметры» -> «Дополнительные параметры подключения» и вставьте сюда строку подключения. Я также добавляю «;Database=DATABASENAME;» в конец строки подключения.
  7. Выполнить SQL
  8. Отключите и перезапустите Visual Studio
  9. Теперь таблицы должны быть доступны в обозревателе сервера после развертывания древовидного элемента управления для файла .mdf.

Вероятно, не все шаги требуются (особенно не в точном порядке, показанном выше), поскольку я не очень оптимизировал процесс - если он работает, не исправляйте его. :-) Кажется, что одним из важных шагов является # 8, то есть перезапуск Visual Studio, поскольку в противном случае обозреватель сервера не сможет повторно открыть базу данных.

1 голос
/ 07 мая 2010

Благодаря HighTechRider, строка подключения, созданная для DataConnection в проводнике сервера, действительно имела параметр AttachDBFilename.

Но эта идея позволила мне попробовать что-то еще.

Следуя тем же шагам, что и выше, я во время входа в sqlexpress сделал что-то другое. На этот раз на экране Connect to Database Engine я нажал кнопку «Показать дополнительные параметры» и перешел на вкладку «Дополнительные параметры подключения».

Здесь я добавил AttachDBFilename=c:\src\mydatabasehome\Database1.mdf;database=Database1;. Обратите внимание, что я использовал полный путь, а не AttachDbFilename=|DataDirectory|\Database1.mdf

Затем он выполнил мой sql для базы данных без проблем.

Затем я вернулся к обозревателю серверов и расширил свое соединение с базой данных, чтобы увидеть новые таблицы, однако соединение не удалось. После небольшого переворота я решил, что по какой-то причине, когда я подключился к экземпляру SQLExpress с помощью экрана «Connect to Database Engine», файл базы данных, указанный в AttachDBFilename, фактически установил постоянное соединение. Таким образом, предыдущая строка подключения (с использованием параметра AttachDBFilename) больше не действительна, так как эта база данных уже подключена.

Поэтому я удалил это соединение и создал новое соединение непосредственно с SQLServer, в котором была база данных с именем «database1», чтобы я мог выбрать.

Теперь я думаю, что все прошло хорошо.

Это был странный процесс, и, конечно, неожиданный для меня, поэтому, если кто-то захочет объяснить, что происходит, я, безусловно, буду признателен. На данный момент у меня есть способ (даже если немного странный) делать то, что я хочу, более ценные решения приветствуются.

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 21 мая 2010

Где находится вкладка «Дополнительные параметры подключения»? У меня есть только вкладка «Дополнительно» и не понятно, куда вы добавили оператор присоединения.

0 голосов
/ 06 мая 2010

Как выглядит ваша строка подключения? Вы пытались вставить AttachDbFilename в строку подключения?

...