Рекомендуемый способ создания таблиц в проекте ASP.Net Forms при использовании EF

1

У меня есть существующее приложение ASP.NET Web Forms, которое использует EF Code First с существующей базой данных, то есть я использую классы EF и DbContext, чтобы указать на существующую базу данных.

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

Я подумал о том, чтобы поместить что-то в файл Global.asax в Application_Start с помощью SqlCommand. Это хорошая идея или вы можете предложить лучший способ сделать это, желательно с EF?

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

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

  • 0
    Да, но нет проблем с использованием EF Migrations и вашего EDIT :) EF Migrations выполняют обновление схемы SQL программно, во время выполнения
Теги:
sql-server
entity-framework

2 ответа

1
Лучший ответ

При использовании EF Code First вы должны использовать EF Code First Migrations, хотя вы говорите это невозможно.

Единственная причина не использовать это несколько серверов баз данных. Используете ли вы распределенные транзакции? В противном случае единственной переменной является ConnectionString на сервере базы данных, а EF Migrations выполнит всю работу по обновлению вашей схемы SQL.

  • 0
    Я прошу прощения за свое невежество там, я должен был сказать, что я считаю, что я не могу использовать их вместо этого. Я считаю, что это невозможно, поскольку серверы - это клиенты, к которым у меня нет прямого доступа, и поэтому они не могут развертывать или добавлять миграции напрямую. Я думал, что миграции должны выполняться в пределах Visual Studio. Могут ли они выполняться в коде, и я могу создать их вручную, не используя менеджер пакетов для их создания?
  • 0
    Нет, миграции выполняются, когда работает сервер приложений. Итак, вы говорите, что строки подключения находятся на серверах ваших клиентов. это нормально, схема SQL будет обновлена EF Migrations, когда клиент запустит ваше приложение
Показать ещё 3 комментария
0

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

Вы можете использовать миграции для инициализации базы данных в рамках процесса развертывания с использованием migrate.exe который является частью пакета EF NuGet.

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

В качестве альтернативы вы можете использовать сценарий SQL как часть процесса развертывания, но тогда вам нужно будет управлять SQL вручную...

  • 0
    У меня проблема в том, что серверы, на которых работает приложение, являются клиентами, которые приобрели приложение, поэтому я не могу развернуть их на их серверах напрямую. Проект развертывается локально, архивируется и выгружается (без web.config во избежание перезаписи строки подключения sql и других значений приложения), а консольное приложение на сервере загружается и распаковывается соответственно. Будут ли миграции работать таким образом или их можно вызывать в коде для достижения этой цели? Я хочу по возможности избегать скриптов и хранить их в приложении.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню