在不同项目的上下文中为项目启用迁移

本文关键字:项目 启用 迁移 上下文 | 更新日期: 2023-09-27 18:22:32

我正在运行:

enable-migrations -ContextProjectName CC.Data -StartUpProjectName CC.Web -ContextTypeName CC.Data.CcDataContext -ProjectName CC.Plugin.MyPlugin -Force -Verbose

这会在CC.Plugin.MyPlugin.Migrations中创建名为Configuration.cs的配置文件,但当它完成时,会抛出以下错误:

迁移配置类型在中找不到"CC.Pluin.MyPlugin.Migrations.Configuration"程序集"CC.Pluin.MyPlugin".

我不明白它怎么找不到它,因为它只是在那里添加了它。congif文件如下所示:

namespace CC.Plugin.MyPlugin.Migrations
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Migrations;
    using System.Linq;
    internal sealed class Configuration : DbMigrationsConfiguration<CC.Data.CcDataContext>
    {
        public Configuration()
        {
            AutomaticMigrationsEnabled = false;
        }
        protected override void Seed(CC.Data.CcDataContext context)
        {
            //  This method will be called after migrating to the latest version.
            //  You can use the DbSet<T>.AddOrUpdate() helper extension method 
            //  to avoid creating duplicate seed data. E.g.
            //
            //    context.People.AddOrUpdate(
            //      p => p.FullName,
            //      new Person { FullName = "Andrew Peters" },
            //      new Person { FullName = "Brice Lambson" },
            //      new Person { FullName = "Rowan Miller" }
            //    );
            //
        }
    }
}

看起来不错。

有什么想法吗?

编辑:这似乎是链接同一解决方案中项目的引用时出现的问题。当我从解决方案链接中删除这些引用,转而通过浏览并指向DLL时,它就开始工作了。

在不同项目的上下文中为项目启用迁移

编辑这并没有解决问题。虽然它允许我添加初始迁移,但当我尝试运行更新数据库时,它似乎又坏了(尽管我确实让它工作了)

经过多次尝试和错误,我发现原因是需要更新我的解决方案中所有项目中的ASP.NET MVC引用。一旦我这样做了,它就像一种魅力。

除此之外,迁移其他一些插件也造成了问题,通过反复尝试,我似乎需要通过Nuget添加Web油脂引用,并将ANTLR更新到最新版本。

另一个问题是:我的插件是主要解决方案的一部分。为了得到一些更新,我不得不自己打开它。保存解决方案文件。启用Nuget自动恢复。清理构建,尝试并启用迁移,让它失败。撤消我在源代码管理中的所有更改。再次通过主解决方案加载它,然后添加迁移,这时它抱怨找不到引用。一旦我添加了这些(或者在某些情况下删除并重新添加),它就起作用了。很奇怪,但它可能对其他人有用。