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

问题描述 投票:0回答:1

我缺少一个链接,了解在以下情况下将我的EF核心的DbContext“连接”到不同应用程序的工作方式:

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

直到现在,我们一直在使用WebAPI应用程序与多个端点共享数据。因此,目前我们正在交换的数据非常静态。我们创建了DbContext,并且该API正在将其用于数据读取和写入操作。

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

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

dbcontext blazor ef-core-3.1 webui
1个回答
1
投票

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

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

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

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

请访问文档,并了解如何在Blazor应用程序中使用HttpClient。

希望这有帮助...

© www.soinside.com 2019 - 2024. All rights reserved.