Entity Framework создать таблицу без разрешения «создание базы данных»? - PullRequest
4 голосов
/ 11 июля 2011

Сначала я работаю с кодом Entity Framework и SQL Server 2008.

Я хочу поддержать этот общий сценарий установки:

  1. Администратор базы данных вручную создает новую базу данных и новуюпользователь, имеющий доступ только к этой базе данных (разрешение database_owner)
  2. Мое приложение настроено с этими данными базы данных и логином нового пользователя
  3. Мое приложение использует Entity Frameworkдля автоматической инициализации базы данных (создания таблиц, представлений и т. д.)

Однако, когда я пытаюсь получить Entity Framework для инициализации базы данных:

context.Database.Create();

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

Как я могу заставить Entity Framework инициализировать базу данных с пользователем, у которого нет "создать базу данных""разрешения, используя базу данных, которая уже была создана для него?

Ответы [ 2 ]

4 голосов
/ 28 ноября 2011
3 голосов
/ 11 июля 2011

Независимо от используемой технологии, приложение должно отделять привилегии развертывания от привилегий обычного использования. Вполне приемлемо требовать более высокие привилегии для развертывания, и вы должны следовать той же модели. Другими словами, ваше развертывание (читай: «Setup», «MSI» или «Installation») должно требовать более высоких привилегий (например, членство в dbcreator) и в этом расширенном контексте развертывания создать модель «сначала код». Поэтому просто переместите файл context.Database.Create в программу установки приложения и попросите администратора установить приложение.

...