如果你使用 Visual Studio 创建了 MVC 项目,或使用了 dotnet new mvc 命令,并带有 -uld 或 --use-local-db 开关,那么身份验证和授权的数据库将存储在 SQL Server LocalDB 中。但此时数据库本身尚未创建。
如果你使用 dotnet new 或 Rider 创建了 MVC 项目,则身份验证和授权的数据库将存储在 SQLite 中,并且名为 app.db 的文件已经创建。
身份验证数据库的连接字符串名为 DefaultConnection,存储在 MVC 网站项目根目录下的 appsettings.json 文件中。
对于 SQLite,请参考以下设置:
{
"ConnectionStrings": {
"DefaultConnection": "DataSource=app.db;Cache=Shared"
},
如果你使用 Visual Studio 创建了 MVC 项目,那么现在通过以下几个简单步骤来创建身份验证数据库:
- 在 Northwind.Mvc 项目的 appsettings.json 文件中,找到名为 DefaultConnection 的数据库连接字符串,如下配置中所示:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-Northwind.Mvc-440bc3c1-f7e7-4463-99d5-896b6a6500e0;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
你的数据库名称将遵循 aspnet-[项目名称]-[GUID] 的模式,并且会有一个不同于上述示例的 GUID 值。
- 在 Northwind.Mvc 文件夹的命令提示符或终端中,输入命令以运行数据库迁移,从而创建用于存储身份验证凭据的数据库,如以下命令所示:
dotnet ef database update
- 注意,数据库已创建,并包含类似 AspNetRoles 的表,如以下部分输出所示:
Build started...
Build succeeded.
info: Microsoft.EntityFrameworkCore.Infrastructure[10403]
Entity Framework Core 9.0.0 initialized 'ApplicationDbContext'
using provider 'Microsoft.EntityFrameworkCore.SqlServer:9.0.0' with options: None
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (129ms) [Parameters=[], CommandType='Text', CommandTimeout='60']
CREATE DATABASE [aspnet-Northwind.Mvc-440bc3c1-f7e7-4463-99d5-896b6a6500e0];
...
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (3ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
CREATE TABLE [AspNetRoles] (
[Id] nvarchar(450) NOT NULL,
[Name] nvarchar(256) NULL,
[NormalizedName] nvarchar(256) NULL,
[ConcurrencyStamp] nvarchar(max) NULL,
CONSTRAINT [PK_AspNetRoles] PRIMARY KEY ([Id])
);
...
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (8ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion])
VALUES (N'00000000000000_CreateIdentitySchema', N'9.0.0');
警告!SQL Server LocalDB 目前尚未支持 Windows ARM 平台。根据微软员工 Drew Skwiers-Koballa 的说法:“对 arm64 平台的 SQLLocalDB 连接仍在我们的开发计划中,但我目前无法承诺具体的发布时间。我们理解连接到 LocalDB 能极大简化 SQL 项目的开发流程。对于开发用途,你可以考虑在本地 arm64 Windows 机器上安装 SQL Server Developer 版本作为替代方案。”
该评论可通过以下链接查看:
https://developercommunity.visualstudio.com/t/Unable-to-load-the-SQLUserInstancedll/10188568#T-N10695492。
如果因未安装 SQL Server LocalDB 而出现错误,可以按照以下链接中的说明手动安装:
https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/sql-server-express-localdb