云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

010 创建用于 SQL Server LocalDB 的身份验证数据库 | .NET 9 => Web

jxf315 2025-01-26 22:53:31 教程文章 41 ℃

如果你使用 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 项目,那么现在通过以下几个简单步骤来创建身份验证数据库:

  1. 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 值。

  1. Northwind.Mvc 文件夹的命令提示符或终端中,输入命令以运行数据库迁移,从而创建用于存储身份验证凭据的数据库,如以下命令所示:
dotnet ef database update
  1. 注意,数据库已创建,并包含类似 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

最近发表
标签列表