EF 5启用的迁移:无上下文类型是在装配中(EF 5 Enable-Migrations : No

2019-09-02 15:00发布

我有4个项目:

Toombu.Entities : all models are there
Toombu.DataAccess: Mapping, Repository and ToombuContext
Toombu.Logique : Logic of my application
Toombu.Web : MVC 4 application. With all others DLL.

我试图启用Toombu.Web迁移,但我有此错误:

No context type was found in the assembly

我怎样才能使迁移?

Answer 1:

使用软件包管理器控制台-ProjectName选项:

Enable-Migrations -ProjectName Toombu.DataAccess -StartUpProjectName Toombu.Web -Verbose


Answer 2:

我很惊讶,没有人提到显而易见的回答了这个问题:实体框架需要上下文之前启用的迁移将工作。 在OP发布的错误信息表明,没有上下文被发现。 当然,这可能是因为包管理器控制台无法“看到”的背景下 - 在这种情况下,接受的答案是可能的解决方案(另一种解决方案是一个我建议,下同)。 但上下文必须存在于当前项目(组装)之前的任何其他解决方案,将工作。

这是什么意思有一个背景? 这意味着必须存在于你的项目的一类,从的DbContext(在System.Data.Entity的)继承。 下面是一个例子:

public class MyDbContext : DbContext
{
    public MyDbContext()
    {
    }
}

要确保你使用

using System.Data.Entity;

之前,上面的代码可以访问的DbContext类,并且您已经使用的NuGet获得实体框架4.1或更高版本当前项目。

如果所有沿着你有一个背景,但是程序包管理器控制台只是没有“看”到:在Visual Studio 2013,你不必使用-ProjectName开关。 取而代之的是,去包管理器控制台(它在视图的可用|其他窗口列表),看看出现在包管理器控制台可停靠窗口顶部的两个下拉菜单。 第一个下拉是包源; 第二个是默认的项目。 如果下拉菜单中默认的项目,然后选择在解决方案中的一个项目,然后将针对所选择的项目执行任何命令你问题的软件包管理器控制台。



Answer 3:

更改默认的项目,并选择从下拉菜单中启动项目:



Answer 4:

如果有人仍面临这个问题。 我解决它通过使用下面的命令:

Enable-Migrations -ProjectName <YOUR_PROJECT_NAME> -ContextTypeName <YOUR_CONTEXT_NAME>

不要忘记使用完整路径上下文名称。



Answer 5:

你的DbContext是Toombu.DataAccess所以,你应该能够在迁移Toombu.DataAccess



Answer 6:

我不得不这样做的两个以上评论的组合。

这两种设置程序包管理器控制台中默认的项目,并且还加入了可变-ContextTypeName我全权指挥的Abhinandan意见。 所以我的命令如下..

Enable-Migrations -StartUpProjectName RapidDeploy -ContextTypeName RapidDeploy.Models.BloggingContext -Verbose

我的设置::

  • 项目名 - RapidDeploy
  • BloggingContext(含类的DbContext,文件是主项目的模型文件夹中)


Answer 7:

更改默认的项目对数据的访问

更改包管理器控制台数据访问默认项目下拉,并给予支持迁移...

这就是所有成功



Answer 8:

我的问题是链接----> 问题1

我解决了这个问题,一个简单的命令行

Install-Package EntityFramework-IncludePrerelease

在那之后,我需要面对一个更的问题,是这样的:

“没有上下文类型在集中找到”

我解决这个问题很容易。 这种“无背景”意味着你需要创建与喜欢的DbContext后缀您的应用程序“模型”文件夹类......这样MyDbContext。 在那里,你需要包括使用System.Data.Entity的一些库;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;


namespace Oceans.Models
{
    public class MyDbContext:DbContext
    {
        public MyDbContext()
        {
        }
    }
}

在那之后,我只是需要这个命令行:

Enable-Migrations -ProjectName <YourProjectName> -ContextTypeName <YourContextName>


Answer 9:

我创建了名为车型目录一 :myData的用下面的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

namespace Vidly.Models
{
    public class MyDbContext : DbContext
    {
        public MyDbContext()
        {
        }
    }
}

重建与应用程式:控制移-B

然后跑了的NuGet控制台执行以下操作:

启用的迁移-StartUpProjectName Vidly -ContextTypeName Vidly.Models.MyDbContext -Verbose

控制台返回:

使用启动项目“Vidly”。 使用的NuGet项目 'Vidly'。 如果检查的背景下针对现有的数据库...项目Vidly启用的Code First迁移。 启用的迁移-StartUpProjectName Vidly -ContextTypeName Vidly.Models.myData -Verbose

并且框架创造了一个迁移目录,并在那里写了Configuration.cs模板用下面的代码:

namespace Vidly.Migrations
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Migrations;
    using System.Linq;

    internal sealed class Configuration : DbMigrationsConfiguration<Vidly.Models.MyDbContext>
    {
        public Configuration()
        {
            AutomaticMigrationsEnabled = false;
        }

        protected override void Seed(Vidly.Models.MyDbContext 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.
        }
    }
}


Answer 10:

确保您使用多个使用NuGet包管理器中的所有项目实体框架的版本相同。

最近的Windows更新可能已安装的实体框架的更新版本到您的活动项目。

背景:大约2016年3月16日,我开始尝试迁移添加到我已经启用迁移,并已成功完成迁移的项目时收到此错误。

我注意到,周围3月10日,实体框架6的一个新的稳定版本已被释放。

如果我指定的允许的迁移命令-ContextTypeName参数,我表示已经启用了迁移错误。

解析度:

1)工具 - > NuGet包管理器 - >管理的NuGet包解决方案

2)(不知道这一步是必要的,但..)我在我的版本的NuGet包管理器更新到最新版本。 此外,更新我的版本的NuGet包管理器后,我不得不重新启动Visual Studio两次前的NuGet命令行会正常工作。

3)工具 - > NuGet包管理器 - >管理的NuGet包解决方案 - >搜索已安装包 - >键入实体框架

一个。 您可能会看到实体框架的多个版本存在。

湾 单击管理对实体框架的各个版本,并确保您的项目使用实体框架的版本相同。

  • 取消选中您不使用和实体框架的版本,您是否正在使用确保它在你的项目中需要对其进行检查实体框架的版本。

再次,在步骤2,我不得不重新启动Visual Studio两次获得NuGet包管理器控制台来更新我的版本的NuGet包管理器后正常工作。 我启动控制台第一次的错误,并“用8个参数异常调用createinstancefrom无法加载文件或程序集的EntityFramework”运行使能迁移命令第二遍的时候。

重新启动Visual Studio中似乎但是解决这些问题。



Answer 11:

感谢您的建议,我在这里通过结合所有的解决方案解决了这个问题。 起初,我创建了的DbContext型号:

 public class MyDbContext: DbContext
    {
        public MyDbContext()
        {
        }
    }

创建的DbContext类之后,我跑与项目名称启用迁移命令: 启用的迁移-ProjectName为yourprojectname



Answer 12:

此错误的原因在你的应用程序编译器没有获得“语境”类的获得。 :用“的DbContext”类实例>类和继承它 - 所以,你可以手动添加添加它

public class MyDbContext : DbContext
    {
        public DbSet<Customer> Customer { get; set; }
        public MyDbContext()
        {
        }
    }


Answer 13:

我已经收到此相同的问题。 我甚至试过上面使,即使我已经做了迁移。 但它一直给同样的错误。 然后,我不得不使用武力开关得到解决这个问题。 我相信这会在别人的帮助的情况下,以及其可能的解决办法。

使移民与力后,您应该更新数据库(确保默认的项目设置正确)。 否则,就像明确迁移正在等待你会得到另一个问题。

然后,只需执行你的插件迁移或任何其他命令,它应该工作。

Enable-Migrations -ProjectName <PROJECT_NAME> -ContextTypeName <FULL_CONTEXT_NAMESPACE.YOUR_CONTEXT_NAME> -force


Answer 14:

如何使用实体更新MVC表和列的framework code第一种方法

1:工具>包管理控制台

2:选择当前项目中,上下文类存在

3:使用下面的命令启用迁移PM > enable-migrations

4:使用下面的命令添加迁移的文件夹名称PM > add-migration MyMigrationName

4:现在以下命令来更新数据库PM > update-database



Answer 15:

按照下面的步骤来解决问题

Install-Package EntityFramework-IncludePrerelease

或者从NuGet包管理器安装实体框架

重新启动Visual Studio

之后,我得到“没有上下文类型在集中找到”

要解决这个问题 - 这个“无背景”这意味着你需要与类似的DbContext后缀您的应用程序创建的“模型”文件夹类......这样AppDbContext。 在那里,你需要包括使用System.Data.Entity的一些库;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;


namespace Oceans.Models
{
    public class MyDbContext:DbContext
    {
        public MyDbContext()
        {
        }
    }
}

之后运行包管理器下面的命令:

Enable-Migrations -ProjectName <YourProjectName> -ContextTypeName <YourContextName>

我的项目名称是 - MyFirstApp和AppDbContext是内部模型文件夹,以便路径是像

Enable-Migrations -StartUpProjectName MyFirstApp -ContextTypeName MyFirstApp.Models.AppDbContext


Answer 16:

namespace EntityFrameworkCodeFirst.Module
{
    public class MyDbContext: DbContext
    {
        public MyDbContext()
        {
        }
    }
}

如果你有多个项目在一个解决方案比你要使用下面的命令: -

Enable-Migrations -ProjectName EntityFrameworkCodeFirst


Answer 17:

添加该继承的类DbContext解决我的问题:

public class MyDbContext : DbContext { public MyDbContext() { } }


Answer 18:

为我工作:

 UnInstall-Package EntityFramework 
  • 重新启动Visual Studio

安装,包装的EntityFramework

  • 建设项目


文章来源: EF 5 Enable-Migrations : No context type was found in the assembly