如何在不同的 Web 应用程序之间共享 DbContext?



>我缺少一个链接,以了解在以下情况下如何将我的 EF 核心的 DbContext "连接"到不同的应用程序:

我有一个应用程序项目,其中包含整个 EF Core Code 第一个数据模型(实体、业务逻辑、枚举等(。

到目前为止,我们使用 WebAPI 应用程序与多个端点共享数据。 因此,我们现在交换的数据目前是静态的。我们创建 DbContext,API 将其用于数据读取和写入操作。

现在有客户要求也构建一个 WebUI(Blazor(。所以我们仍然希望在UI中使用WebAPI进行数据交换,但进一步我们需要从我们的数据模型中获得更多的业务逻辑元素(包含INotifyPropertyChanged事件处理等(。我们在实体类中实现了事件句柄。因此,我们打算为每个包含 DbContext 实例的用户/客户端构建一个会话对象。但是如何将实例化的 DbContext 从 Web API 移交到我的 UI 应用程序。

很高兴得到一些意见。感谢任何建议。

不要将 DBContext 对象传递给"UI 应用程序",例如 Blazor 应用。 你没有提到你用的是什么口味的 Blazor......但是,以下内容可能适用于 Blazor 服务器应用和 Blazor WebAssembly 应用...根据我从您的问题中收集到的信息,您正在公开 Web API 端点以检索数据和保存数据。这很好。剩下的工作是在 Blazor 中创建访问这些终结点的代码。您应该使用 HttpClient 服务来执行此操作。如果使用 Blazor 客户端,则会配置此对象,并使其可用于注入到组件和服务中。这种类型的HttpClient基于JavaScript Fetch API。

如果要创建 Balzor 服务器应用程序,则必须将 HttpClient 服务添加到 DI 容器并相应地对其进行配置,然后才能将其注入到组件和服务中。在这种情况下,您应该使用 IHttpClientFactory 来提供 HttpClien onjects。

原则上,您必须通过 HttpClient 查询您的 Web API 方法。

请注意,如果使用 Blazor 服务器应用,则不必使用 Web API。相反,您可以创建执行与 Web API 提供的功能类似的服务。

请转到文档并熟悉如何将 HttpClient 与 Blazor 应用配合使用。

希望这有帮助...

相关内容

最新更新