数据库优先的 Blazor

Blazor with Database First

我正在尝试在 Visual Studio 2019 年使用 Blazor 构建一个简单的 CRUD 应用程序 - 我在 YouTube、PluralSight 和 Channel 9 之间观看了超过 7 个教程,并且在所有这些教程中,他们都使用 Entity Framework 从内部创建数据库和表的核心 Visual Studio,这是可以理解的,因为代码优先是理想的架构。

但是我的数据库和 table 已经存在,对于第一步,我只想将 Blazor 应用程序连接到 table 并将其读入 UI 列。

如何在 Visual Studio 2019 年完成导入现有数据库 table 的步骤?如果网络上有专门针对在 Blazor 中完成此操作的文档,请指出这一点,因为我无法找到一些旧的 ASP.Net MVC 文档之外的任何内容。

在我们公司,我们使用 EF Core Power Tools 生成上下文,并使用 类 模型 Entity Framework 核心。

您可以在https://github.com/ErikEJ/EFCorePowerTools/wiki/Reverse-Engineering下找到相应的文档。使用此工具,您可以直接在 Visual Studio 中生成 类,您还可以存储配置,如果数据库发生变化,您可以轻松更新 类。

将以下包添加到您的项目中:

<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="3.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.1">

将您的数据库连接字符串添加到 appsettings.json

{
  "ConnectionStrings": {
    "MyConnection": "Server=tcp:<yourServer>,1433;Initial Catalog=<yourDatabase>;Persist Security Info=False;User ID=<yourDatabaseUserName>;Password=<yourDatabaseUserPassword>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=True;Connection Timeout=30;"
  }
}

打开 PackageManagerConsole 并输入

Scaffold-DbContext -Connection name=MyConnection -Provider Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Context MyDbContext -Force

这将在您的项目中创建一个 Models 文件夹,其中包含 MyDbContext.cs 以及一个 <TableName>.cs-数据库中每个 table 的文件。

注意:对于第一次导入数据库,您不需要脚手架中的 -Force 选项。但是,如果您在第一次导入后对数据库进行了更改并希望之后更新您的 cs-类,则需要它。

Rene 的回答是正确的,只需要修改 2 处:

您需要在最后一个包引用的 > 之前添加一个 /。

您还需要参考“Microsoft.EntityFrameworkCore.Design”版本="3.1.1"