【问题标题】:EF7 migration generator is ignoring context parameterEF7 迁移生成器忽略上下文参数
【发布时间】:2017-02-12 12:33:51
【问题描述】:

我最近将我的 EF7 项目从 DotNet Core 1.0.0 迁移到版本 1.1.0,现在我无法创建数据库迁移。

在我的项目中,我有多个上下文,工具 dotnet-ef 提供了一个命令行参数来区分这些上下文,以便为每个上下文创建单独的迁移。

当我尝试使用命令为上下文“AuditLogContext”创建迁移时

dotnet ef migrations add Initial --context 'Some.Namespace.AuditLogContext' --output-dir './Migrations/AuditLogMigrations'

然后它失败了,告诉我

现有迁移使用名称“初始”。

当我尝试使用其他名称(例如 Initial2)创建迁移时,会创建迁移但使用了错误的上下文。

在文件夹中

./Migrations/AuditLogMigrations

是命名的新文件

20170212122451_Initial2.cs

20170212122451_Initial2.Designer.cs

CoreContextModelSnapshot.cs

我希望使用 AuditLogContextModelSnapshot.cs 文件。

以前有人解决过这个问题吗?

【问题讨论】:

    标签: c# .net entity-framework entity-framework-migrations


    【解决方案1】:

    我找到了这个问题的原因。

    我的项目中有多个上下文,每个上下文都需要参数。因此,迁移构建器希望每个上下文都有一个工厂。

    在我的例子中,一个类实现了所有工厂,现在存在一个错误,即使用接口的具体顺序来确定创建哪些迁移。

    public class Program : IDbContextFactory<CoreContext>, IDbContextFactory<AuditLogContext>, IDbContextFactory<LockContext>
    

    这个 sn-p 将为 CoreContext 创建迁移

    public class Program :  IDbContextFactory<AuditLogContext>, IDbContextFactory<CoreContext>,IDbContextFactory<LockContext>
    

    sn-p 将为 AuditLogContext 创建迁移。

    这有点烦人,但如果你知道如何创建迁移就可以了。

    【讨论】:

      猜你喜欢
      • 2022-01-20
      • 2017-10-17
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 2015-07-16
      • 2019-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多