【问题标题】:How to apply EF Core DB schema from a shared class library NuGet package如何从共享类库 NuGet 包应用 EF Core DB 模式
【发布时间】:2023-01-17 23:22:37
【问题描述】:

假设我有一个在共享库中定义的扩展 DBContext(为简单起见,这里称为 DBContext)的类加上一个扩展方法,以简化将此 DBContext 添加到依赖项注入(给定一个配置变量,它将生成一个到数据库的连接字符串)。

我将如何应用数据库模式?来自共享库?来自使用该库的二进制文件?

据我了解,当您将模式应用于数据库时,会创建一个迁移文件夹,我想要一个规范的地方来放置这些迁移。

如果我从共享库运行dotnet ef database update,如果我不提供配置,它怎么知道数据库在哪里?我会在哪里提供配置(比如哪一个数据库服务器和什么证书)

这个共享库可能会被许多消费者使用,因此在每个项目上都有迁移脚本听起来不是个好主意。有什么建议么?

【问题讨论】:

    标签: entity-framework-core nuget


    【解决方案1】:

    将连接字符串放入启动项目(appsettings.json 或其他)的配置中,并将其传递给库中的扩展方法。

    将迁移保留在带有DbContext 的库项目中。当您运行 dotnet ef database update 时,您可以提供单独的 --project(包含您的 DbContext 和迁移的项目)和 --startup-project(实际使用您的库的项目)选项。

    https://learn.microsoft.com/en-us/ef/core/cli/dotnet#using-the-tools

    启动项目是工具构建和运行的项目。这些工具必须在设计时执行应用程序代码以获取有关项目的信息,例如数据库连接字符串和模型配置。默认情况下,当前目录下的项目是启动项目。您可以使用 --startup-project 选项将不同的项目指定为启动项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      • 2020-09-28
      • 1970-01-01
      • 2020-01-13
      • 2021-04-13
      • 2021-12-24
      • 2020-05-20
      相关资源
      最近更新 更多