【问题标题】:How to generate Blazor wasm scaffolded CRUD (EF) wiht ASP.NET Core Hosted如何使用 ASP.NET Core Hosted 生成 Blazor wasm 脚手架 CRUD (EF)
【发布时间】:2022-12-29 14:07:36
【问题描述】:

我正在寻找如何创建脚手架 blazor组件.

我已经知道如何在 blazor 服务器应用程序上创建它,我想在 wasm 应用程序上做同样的事情,但可以找到方法。我的 blazor wasm 是“ASP.NET Core Hosted”(和 PWA),所以你有一个后端项目(和一个“共享项目”),它拥有所有控制器并管理 EF 数据上下文。

在 VS 上,当您生成一个托管 ASP.NET Core 的新 blazor wasm 项目时,它会创建 3 个项目:客户端组件(wasm 本身)、服务器组件(数据访问)和共享组件(模型)

我有 EF 核心和 dbcontext服务器项目,以及模型中的共享项目,但可以找到如何创建所有 CRUD 组件客户项目。

在 Blazor 服务器上,我可以这样做:

然后:

最后:

然后它创建了这样的东西:

但是所有的“.cshtml”都是这样的:

我想要类似于自动生成的天气组件的 blazor 组件:

如果我在“添加新脚手架项目”中选择“Razor 组件”,我得到的只是一个空组件。

我一直在谷歌上搜索很多,但找不到任何可以帮助我生成此内容的东西,也许这是不可能的,我不知道,或者我可能不了解某些东西。

Edit1:澄清 wasm“ASP.NET 核心托管”

Edit2:添加了有关我正在使用的项目类型的更多详细信息

【问题讨论】:

  • WASM 代码将在客户端而不是服务器上运行,并且客户端将无法访问数据库(在服务器上运行),所以我不确定脚手架是否能够以相同的方式工作,即使是通过 SignalR。要与数据/实体交互,您需要服务器渲染以实现更直接的绑定,或者让您的 WASM 模型从服务器请求数据。我对 Blazor 还不是很深入,所以很可能有其他人知道的选项可能无法通过脚手架获得。
  • 谢谢你们,我忘了解释一些事情,我的 blazor wasm 是“ASP.NET Core Hosted”(和 PWA),所以你有一个后端项目(和一个“共享项目”),它拥有所有控制器并管理 EF数据上下文。我将编辑我的问题以澄清这一点。我希望脚手架可以通过服务器项目工作,也许这是不可能的
  • 您误解了所涉及的内容以及 SPA(而不仅仅是 Blazor WASM)的作用。 Blazor WASM 在浏览器上运行。那里没有数据库。它只能通过 HTTP API 与服务器对话。这就是 HttpClient 类所做的。另一方面,EF Core 在服务器项目上运行,在服务器上,只能用于为要用于提供 SPA 的 HTTP API(例如 Web API)提供数据。您尝试使用的 Razor Pages 向导只能在单个 Razor Pages 项目中生成类。这根本不是这里的情况
  • 谢谢你的回复,我想我已经知道你在说什么了。 Blazor wasm 在浏览器上运行,是的,但可以使用 hub 或 api 与后端通信(后端是 EF 所在的位置)。我认为我没有解释得太好,我只是假设了我的问题的一些事情(比如项目组件 VS 自动生成)。我想要的是一种为模型中的每个实体(模型位于“共享项目”)的“客户端”项目生成 blazor crud 组件的方法。我已经生成了。
  • Blazor 还是比较新的,还没有 CRUD 页面生成。我怀疑它是否在功能列表中。当您需要(大量)CRUD 页面时,请使用 MVC 或 Razore 页面。然后将 Blazor 用于应用程序中更有趣的部分。

标签: c# entity-framework blazor blazor-webassembly scaffolding


【解决方案1】:

无法在 blazor-wasm 中运行 EF。您应该使用 API 来传输数据或改用 blazor-serverside。

【讨论】:

  • 谢谢,我忘了解释一些事情,我的 blazor wasm 是“ASP.NET Core Hosted”(和 PWA),所以你有一个后端项目(和一个“共享项目”),它拥有所有控制器并管理 EF 数据上下文.我将编辑我的问题以澄清这一点。
  • 然后您可以使用脚手架在服务器项目中生成正确的控制器并从客户端项目调用 API,只需选择带有 EF 的 API 控制器或带有自定义操作的控制器
  • 谢谢 Ivan,我想要的是 .razor 组件页面。我已经有了 API 控制器(我完全按照你说的做了)。
【解决方案2】:

您可以创建一个具有相同 ef db 上下文的 blazor 服务器应用程序,并使用它来生成脚手架 Razor html ui,然后将其粘贴到 wasm 应用程序,并将 Ef 特定代码替换为对服务器端项目上的 Web 服务的调用。

【讨论】:

    猜你喜欢
    • 2020-09-30
    • 2017-11-16
    • 2020-09-17
    • 1970-01-01
    • 2016-05-26
    • 2020-12-24
    • 1970-01-01
    • 2016-10-10
    • 2018-04-03
    相关资源
    最近更新 更多