如何在不同的 WebApp 之间共享 DbContext?

How to share DbContext between different WebApps?

我缺少一个 link 以了解在以下情况下如何将我的 EF 核心的 DbContext "connect" 用于不同的应用程序:

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

到目前为止,我们一直在使用 WebAPI 应用程序与多个端点共享数据。 所以我们现在交换的数据目前是相当静态的。我们创建了 DbContext,API 正在使用它进行数据读写操作。

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

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

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

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

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

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

请转到文档并熟悉如何将 HttpClient 与 Blazor 应用程序一起使用。

希望这对您有所帮助...