【发布时间】:2021-12-10 02:48:52
【问题描述】:
我正在尝试将 Blazor 项目设置为可在许多其他项目中重复使用,但我在理解 Blazor 的 DI 系统如何与 NuGet 包配合使用时遇到问题。
简而言之,我构建了一个简单的 Blazor 应用程序作为错误报告/请求的票务系统。它通过输入表单(构建为组件)收集简单信息,并通过实体框架和连接字符串(存储在 AppSettings.JSON 中)将票证上传到 SQL Server 数据库。 DbContext 通过 AddDbContextFactory 注入到票务应用的 DI 系统中。这一切都在解决方案中完美运行。
我的目标是:我想打包这个票务系统,并以最少的设置在我的其他应用程序中重复使用它。在其他应用程序中,我想重用“AddTicket”组件,它会简单地接受一些简单的报告数据并更新票务数据库。
作为测试,我在我的机器上本地将票务应用打包为 NuGet 包。我将它导入到一个单独的主机应用程序中。但是,我必须在主机应用程序中重新创建连接字符串和依赖注入(使用上下文工厂和所有内容)才能使包正常工作。
我的问题是,当我构建自己的 NuGet 包时,我不了解 Blazor 的 DI 系统是如何工作的,并且我不了解 Startup.cs 中的依赖注入与 NuGet 包中的内容的流程。
我只是一个简单的、可重用的表单和提交组件,所有 EF 和数据库逻辑都以最简单的方式内置在其中,我可以放入十几个外部项目中。
构建 NuGet 包的最佳方法是什么,这样我就不需要在这种情况下进行额外的依赖注入?如果我必须额外进入宿主应用的 DI 系统,我该如何让它尽可能简单?
【问题讨论】:
标签: entity-framework asp.net-core dependency-injection blazor blazor-server-side