gpt4 book ai didi

entity-framework-4 - EF 4.3在一个数据库中具有多个DbContext的自动迁移

转载 作者:行者123 更新时间:2023-12-03 11:48:20 27 4
gpt4 key购买 nike

我正在尝试将EF 4.3迁移与多个代码优先的DbContext一起使用。我的应用程序分为几个插件,这些插件可能具有关于其域的自己的DbContext。该应用程序应使用一个单独的sql数据库。

当我尝试自动迁移空数据库中的上下文时,这仅对第一个上下文成功。其他所有上下文都需要将AutomaticMigrationDataLossAllowed-Property设置为true,然后尝试删除上一个的表。

所以我的问题是:

  • 我如何才能告诉迁移配置只是照顾在其对应上下文中定义的表,而将所有其他表保留下来?
  • 什么是在单个数据库中通过自动迁移处理多个DbContext的正确工作流程?

  • 谢谢!

    最佳答案

    代码优先迁移假定每个数据库只有一个迁移配置(每个配置只有一个上下文)。

    我可以想到两种可能的解决方案:

  • 创建一个包含每个上下文的所有实体的聚合上下文,并从您的迁移配置类中引用此“ super ”上下文。这样,所有表都将在用户的数据库中创建,但是数据将仅位于为其安装了插件的表中。
  • 为每个上下文使用单独的数据库。如果您在上下文之间具有共享实体,请添加自定义迁移,并用CreateTable(...)调用替换Sql("CREATE VIEW ...")调用,以从实体的“原始”数据库中获取数据。

  • 我会尝试#1,因为它将所有内容都保存在一个数据库中。您可以在解决方案中创建一个单独的项目,以包含您的迁移和此“ super ”上下文。只需添加项目,引用所有插件的项目,创建包含所有实体的上下文,然后在此新项目上调用Enable-Migrations。在那之后,事情应该会按预期进行。

    关于entity-framework-4 - EF 4.3在一个数据库中具有多个DbContext的自动迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9110536/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com