使用数据库优先的方式与Blazor配合

13

我正在尝试使用Visual Studio 2019和Blazor构建一个简单的CRUD应用程序。在YouTube、PluralSight和Channel 9上观看了7个教程,它们都使用Entity Framework Core在Visual Studio中创建数据库和表,这是可以理解的,因为代码优先是理想的架构。

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

我如何在Visual Studio 2019中导入现有的数据库表?如果有关于在Blazor中具体实现此操作的文档,请指向那里,因为我无法在除一些旧的ASP.Net MVC文档之外找到任何信息。


1
你可以尝试使用EF Reverse POCO Code First Generator https://github.com/sjh37/EntityFramework-Reverse-POCO-Code-First-Generator/blob/master/README.md。如果要编辑TT文件,可以使用Resharper插件ForTea。 - OO7
3
尝试访问:http://blazorhelpwebsite.com/Blog/tabid/61/EntryId/4318/Creating-A-Step-By-Step-End-To-End-Database-Server-Side-Blazor-Application.aspx。本文将逐步介绍如何创建一款完整的数据库服务器端Blazor应用程序。 - Michael Washington
@MichaelWashington 这个网站很棒!我不知道它的存在,谢谢你指引我来这里。编辑:FYI-我试图给你的评论点赞,但它不让我这么做,说我已经点过了!不确定发生了什么事情,但想确保你知道我试过了。 - Stpete111
2
没问题,那只是一个链接 :) - Michael Washington
1
迈克尔的链接不再可用,我猜这是同一篇博客文章:https://blazorhelpwebsite.com/ViewBlogPost/34,它展示了 EF Core Power Tools 生成类的方法。 - spikey
3个回答

16

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

<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文件。

注意:在首次导入数据库时,您不需要在脚手架中使用-Force选项。但如果在首次导入后更改数据库并希望更新cs类,则需要使用该选项。


我不得不将NuGetPackages升级到最新版本,但现在它可以正常工作了。<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="7.0.8" />等等 - Marty_in_a_Box
我不得不将NuGetPackages升级到当前版本,但现在它可以运行了。 <PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="7.0.8" /> 等等 - undefined

7

这是唯一一个真正对我有用的解决方案,谢谢! - Axel Samyn

2

Rene的回答是正确的,只需要做两个修改:

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

您还需要引用“Microsoft.EntityFrameworkCore.Design”版本=“3.1.1”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接