【问题标题】:How do you create a Blazor WebAssembly website connected to a database with CRUD functions如何使用 CRUD 功能创建连接到数据库的 Blazor WebAssembly 网站
【发布时间】:2022-05-04 00:33:49
【问题描述】:

我正在尝试更深入地了解 blazor。我想建立一个可以使用连接到数据库的 CRUD 功能的网站。 我在 .Net Core/ASP.NET CORE 5 上使用 Microsoft SQL Server 以及 Microsoft SQL Server Management Studio 和 Visual Studio 2019。

【问题讨论】:

  • 在 Internet 上搜索“Blazor 数据库 CRUD”。您会找到文章和 Youtube 视频。这里有一组文章 - shauncurtis.github.io/Building-a-Database-Application-in-Blazor - 描述了我使用的框架/方法。
  • 您不需要,就像任何 SPA 网络应用程序一样。您创建一个服务器端 API 并调用它。
  • @Panagiotis Kanavos 你确定吗?

标签: c# blazor


【解决方案1】:

你没有,这是简单的答案。 Blazor WebAssembly 仍然是在浏览器中运行的网站,因此对客户端计算机的访问非常有限。

为此,您有两层,即 Blazor WASM 中的网站,它在另一层(基本的 ASPNET Core WebAPI)上调用 WebAPI。该 API 层位于您的服务器上,可以访问数据库和其他资源。 Blazor WASM 在这方面与 Angular、Vue 或 React 没有什么不同。

另一种选择是 Blazor 服务器,因为实际上一切都在您的服务器上运行,而不是在客户端上。

【讨论】:

  • 即使使用 Blazor Server,也不是连接到数据库或使用 DbContext 那么简单。 Blazor Server 也是有状态的,除非显式处理连接或 EF 上下文,否则只要用户的“电路”处于活动状态,它们就会保持打开状态。即使使用 Blazor Server,也最好调用“服务”
  • 不完全正确。 EF Core 不会保持连接打开。当需要进行数据库操作时,从连接池中检索一个新的连接,执行该操作,然后关闭连接并返回连接池。这不会发生在 Dispose 上。它发生在引擎盖下。直接从 Blazor 应用程序使用 DbContext 是非常安全的。
  • @PanagiotisKanavos 那是完全错误的。上下文的生命周期可以微调到您想要的任何生命周期。如果需要瞬态,请使用 DbContext 工厂,如果需要将其与组件的生命周期匹配,请使用 OwningComponent。如果您需要将其与服务范围相匹配,请使用 session/singleton。
  • @MayurEkbote 该评论自相矛盾(如果错误,为什么需要微调?)和文档。文章ASP.NET Core Blazor Server with Entity Framework Core。开头段落指出:Blazor Server is a stateful app framework. The app maintains an ongoing connection to the server, and the user's state is held in the server's memory in a circuit. One example of user state is data held in dependency injection (DI) service instances that are scoped to the circuit.
  • @MayurEkbote 您可以在ASP.NET Core Blazor dependency injectionService Lifetime 部分找到更多详细信息。因此,与其在组件代码中传播这种生命周期管理,不如将其隐藏在服务中。
【解决方案2】:

这里是 old sample project,新的是 this project 的 Blazor WebAsm 解决方案,它为通过 EF Core 访问的数据库实现 CRUD。它基于 EasyData 开源库。

【讨论】:

    猜你喜欢
    • 2021-01-07
    • 1970-01-01
    • 2015-05-10
    • 2016-03-21
    • 2023-02-08
    • 2018-04-01
    • 2017-10-26
    • 2021-06-15
    • 2019-02-08
    相关资源
    最近更新 更多