【问题标题】:EF Core - create database programmaticallyEF Core - 以编程方式创建数据库
【发布时间】:2019-08-10 08:31:48
【问题描述】:
以编程方式在 EF 核心中创建数据库然后运行迁移以确保新数据库具有所有数据库对象的最佳方法是什么?
我们正在构建一个基于 SaaS 的应用程序,订阅者可以自己在网站上注册,当他们注册时提供正确的付款详细信息,该应用程序需要自动为订阅者创建一个新数据库(在 SQL Azure 中)并执行所有迁移新数据库。
我在这里看过这个问题:
auto create database in Entity Framework Core
它没有详细说明以下内容:
1)如何指定新数据库的名称
2)创建一个新的数据库登录
3) 将新的数据库登录作为具有 dbo 权限的用户添加到数据库
【问题讨论】:
标签:
entity-framework-core
azure-sql-database
【解决方案1】:
创建一个 Azure SQL 数据库基本层(例如,每月花费 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'