EF Core - создать базу данных программно - PullRequest
0 голосов
/ 19 марта 2019

Какой наилучший подход заключается в программном создании базы данных в ядре EF и последующем выполнении миграций, чтобы убедиться, что в новой базе данных есть все объекты базы данных?

Мы создаем приложение на основе SaaS, в котором подписчики могут зарегистрироваться на веб-сайте самостоятельно, и когда они регистрируются, предоставляя правильные реквизиты платежа, приложению необходимо автоматически создать новую базу данных (в SQL Azure) для подписчика и выполнить все миграции на новая база данных.

Я посмотрел на этот вопрос здесь: автоматическое создание базы данных в Entity Framework Core Это не дает подробностей о следующем: 1) как указать название новой базы данных 2) создать новую базу данных логин 3) добавить этот новый логин базы данных в качестве пользователя с правами доступа dbo

1 Ответ

0 голосов
/ 19 марта 2019

Создайте базовый уровень Azure SQL Database Basic (например, он стоит 5 долларов в месяц, вы также можете создать бесплатный, доступный на год) со всеми объектами, необходимыми в базе данных, которые вы можете копировать асинхронно с помощью следующего оператора:ниже или с помощью PowerShell.

CREATE DATABASE db_copy   
    AS COPY OF ozabzw7545.db_original ( SERVICE_OBJECTIVE = 'P2' );

Затем можно отслеживать, когда заканчивается копия, с помощью инструкции ниже:

   Select
     [sys].[databases].[name], 
       [sys].[databases].[state_desc], 
       [sys].[dm_database_copies].[start_date], 
       [sys].[dm_database_copies].[modify_date], 
       [sys].[dm_database_copies].[percent_complete],
             [sys].[dm_database_copies].[error_code], 
       [sys].[dm_database_copies].[error_desc], 
       [sys].[dm_database_copies].[error_severity], 
       [sys].[dm_database_copies].[error_state]
   From
      [sys].[databases]
   Left
 Outer
 Join
 [sys].[dm_database_copies] 
   On
    [sys].[databases].[database_id] = [sys].[dm_database_copies].[database_id]
   Where
   [sys].[databases].[name] = 'db_copy'
...