entity-framework - 类型 'Context' 不是从 'System.Data.Entity.Migrations.DbMigrationsConfiguration' 继承的。使用 EF 迁移

标签 entity-framework entity-framework-migrations

我有两个上下文和一个数据库。

当我尝试添加数据库迁移 (add-migrations) 时出现此错误。

我已将 EF 更新到 6.2。

我检查了一下,configuration.cs 文件正在使用

internal sealed class Configuration : DbMigrationsConfiguration<MSiH.CigaretteContext>

PM> add-migration -configuration MSiH.DataAccess.CigaretteContext -Verbose
cmdlet Add-Migration 在命令管道位置 1
提供以下参数的值:
名称:首字母
使用启动项目“GridAndMap”。
使用 NuGet 项目“GridAndMap”。
System.Data.Entity.Migrations.Infrastructure.MigrationsException: The type
 'MSiH.CigaretteContext' does not inherit from 
'System.Data.Entity.Migrations.DbMigrationsConfiguration'. 
Migrations configuration types must extend from
'System.Data.Entity.Migrations.DbMigrationsConfiguration'.
at System.Data.Entity.Utilities.TypeExtensions.CreateInstance[T]
(Type type, Func`3 typeMessageFactory, Func`2 exceptionFactory)
at System.Data.Entity.Migrations.Utilities.MigrationsConfigurationFinder.FindMigrationsConfiguration
(Type contextType, String configurationTypeName, 
Func`2 noType, Func`3 multipleTypes, Func`3 noTypeWithName, Func`3 multipleTypesWithName)
 at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.FindConfiguration()
 at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Run()
 at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
 at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
 at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
 at System.Data.Entity.Migrations.Design.ToolingFacade.Scaffold(String migrationName,    String language, String rootNamespace, Boolean ignoreChanges)
 at System.Data.Entity.Migrations.AddMigrationCommand.Execute(String name, Boolean force, Boolean ignoreChanges)
 at System.Data.Entity.Migrations.AddMigrationCommand.<>c__DisplayClass2.<.ctor>b__0()
 at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
 The type 'MSiH.EyePaid.CigaretteWebApp.DataAccess.CigaretteContext' does not inherit  
 from 'System.Data.Entity.Migrations.DbMigrationsConfiguration'. Migrations 
 configuration types must extend from
'System.Data.Entity.Migrations.DbMigrationsConfiguration'.

更新

我正在关注 example关于如何在多个上下文中使用 EF Migration。
Enable-Migrations -ContextTypeName Foo.CigaretteContext

此命令给出了错误:
Add-Migration -configuration Foo.CigaretteContext Initial

此命令有效:
Add-Migration Initial

最佳答案

ConfigurationConfigurationTypeName参数是指派生自 DbMigrationsConfiguration 的类.

您所做的是指派生自 DbContext 的类。 .

你应该这样做。

Add-Migration -Configuration MSiH.MigrationDatabaseIfAny.Configuration Initial

PS:MigrationDatabaseIfAny是目录名 如果您的 Configuration类位于一个目录下,如果没有就删除它。

关于entity-framework - 类型 'Context' 不是从 'System.Data.Entity.Migrations.DbMigrationsConfiguration' 继承的。使用 EF 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24970876/

相关文章:

entity-framework - 如何使用 Entity Framework 进行递归加载?

c# - 具有代码优先迁移的 Entity Framework 多个项目

linq - 将随机 Guid 列添加到 Linq to Entities 查询以获取随机记录

c# - 连接表有两个以上字段的 Entity Framework 中的多对多关系?

entity-framework - F#数据访问和EF迁移

c# - 自定义 Entity Framework 核心迁移脚本?

c# - MVC3中相同类型实体之间的多对多关系

mysql - EF Code First Migrations - 两个程序集 - 查看错误的配置文件

c# - 将 Func 传递到 Where 并使用 IQueryable

c# - 当 ID 字段 (PK) 自动递增时(带有 EF 的 MySQL),使用与之前相同的 Id 恢复已删除的记录