EF Core-以编程方式创建数据库

时间:2019-03-19 18:03:56

标签: entity-framework-core azure-sql-database

以编程方式在EF core中创建数据库,然后运行迁移以确保新数据库具有所有数据库对象的最佳方法是什么?

我们正在构建一个基于SaaS的应用程序,订阅者可以在该网站上自行注册,当他们注册以提供正确的付款详细信息时,该应用程序需要自动为订阅者创建一个新数据库(在SQL Azure中),并在新的数据库。

我在这里查看了这个问题: auto create database in Entity Framework Core 它没有提供以下详细信息: 1)如何指定新数据库的名称 2)创建一个新的数据库登录名 3)以具有dbo权限的用户身份将该新数据库登录名添加到数据库中

1 个答案:

答案 0 :(得分:0)

创建一个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'