Entity Framework Core 2.0 Add-Migration 不会创建任何迁移文件

     2023-03-14     199

关键词:

【中文标题】Entity Framework Core 2.0 Add-Migration 不会创建任何迁移文件【英文标题】:Entity Framework Core 2.0 Add-Migration doesn't create any migration files 【发布时间】:2018-02-01 17:21:16 【问题描述】:

最近从 EF Core 1.0 迁移到 EF Core 2.0,运行良好。今天我添加了一个新表(代码优先)并将其添加到我的 DbContext 中:

public virtual DbSet<Foo> Foos  get; set; 

当我在一个单独的项目中使用我的 DbContext 运行迁移时(请记住这一切之前都有效),迁移结束,但没有创建迁移文件。这一切都在 Core 2.0 之前使用:

http://paultechguy.blogspot.com/2017/04/entity-framework-core-migrating-and.html

PM> Add-Migration GradePremade -project Mfc.MfcRepositoryModel -verbose -context MfcDbContext -StartupProject web.xyz
Using project 'class.xyz\Mfc.MfcRepositoryModel'.
Using startup project 'web.xyz'.
Build started...
Build succeeded.
C:\Program Files\dotnet\dotnet.exe exec --depsfile C:\development\xyz\web.xyz\bin\Debug\netcoreapp2.0\web.xyz.deps.json --additionalprobingpath C:\Users\pcarver\.nuget\packages --additionalprobingpath "C:\Program Files\dotnet\sdk\NuGetFallbackFolder" --runtimeconfig C:\development\xyz\web.xyz\bin\Debug\netcoreapp2.0\web.xyz.runtimeconfig.json "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.entityframeworkcore.tools\2.0.0\tools\netcoreapp2.0\ef.dll" migrations add GradePremade --json --context MfcDbContext --verbose --no-color --prefix-output --assembly C:\development\xyz\web.xyz\bin\Debug\netcoreapp2.0\Mfc.MfcRepositoryModel.dll --startup-assembly C:\development\xyz\web.xyz\bin\Debug\netcoreapp2.0\web.xyz.dll --project-dir C:\development\xyz\class.xyz\Mfc.MfcRepositoryModel --root-namespace Mfc.MfcRepositoryModel
Using assembly 'Mfc.MfcRepositoryModel'.
Using startup assembly 'web.xyz'.
Using application base 'C:\development\xyz\web.xyz\bin\Debug\netcoreapp2.0'.
Using working directory 'C:\development\xyz\web.xyz'.
Using root namespace 'Mfc.MfcRepositoryModel'.
Using project directory 'C:\development\xyz\class.xyz\Mfc.MfcRepositoryModel'.
Finding DbContext classes...
Finding IDesignTimeDbContextFactory implementations...
Finding application service provider...
Finding BuildWebHost method...
No BuildWebHost method was found on type 'xyz.Program'.
No application service provider was found.
Finding DbContext classes in the project...
Found DbContext 'ApplicationDbContext'.
Found DbContext 'MfcDbContext'.
Using DbContext factory 'MfcContextFactory'.
Using context 'MfcDbContext'.
Finding design-time services for provider 'Microsoft.EntityFrameworkCore.SqlServer'...
Using design-time services from provider 'Microsoft.EntityFrameworkCore.SqlServer'.
Finding IDesignTimeServices implementations in assembly 'web.xyz'...
No design-time services were found.

没有对我来说很明显的错误,也没有创建迁移文件。我已经完成了移除迁移以开始清理,但仍然没有工作。

【问题讨论】:

为了微笑,我重命名了我的数据库并重新运行了 Add-Migrations。结果完全相同。 您找到解决方案了吗?我遇到了完全相同的问题。 【参考方案1】:

您需要更新您的 Program 类,使其看起来像这样

    public class Program

    public static void Main(string[] args)
    
        var host = BuildWebHost(args);

        host.Run();
    

    // Tools will use this to get application services
    public static IWebHost BuildWebHost(string[] args) =>
        new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();

【讨论】:

我的网络应用程序的 Program.cs 确实已经有了这个。我的单独的类库存储库中也有一个 Program.cs。请注意,我在原始帖子中提到了一个链接,该链接是为了获得一个带有工作存储库的单独类库所遵循的步骤;这在 EF Core 2.0 和 VS 2017 15.x 之前运行良好。 @user2737646 您使用的是 .NetCore 1.x 还是 .NetCore 2.0? 我正在使用 .NetCore 2.0,VS 2017 15.3,EF Core 2.0【参考方案2】:

从迁移项目中删除所有 IDesignTimeDbContextFactory&lt;TContext&gt; 实现,并在启动类的 ConfigureServices 方法中注册 DbContext,与运行应用程序时注册的方式相同。

然后像往常一样运行你的迁移命令,这在我头疼了几个小时后对我有用。

【讨论】:

我认为这个应该可以工作......因为我正在尝试使用 sqlite 而不是 sqlserver【参考方案3】:

我尝试更新 .csproj 文件中的运行时版本以包含:

<RuntimeFrameworkVersion>2.0.3</RuntimeFrameworkVersion>

在 PropertyGroup 标记中。它对我有用。

见:Russell Seamer's Solution

【讨论】:

【参考方案4】:

我必须将一个项目标记为启动项目。

【讨论】:

【参考方案5】:

.NET Core 类库中存在问题。成功的解决方法是将以下内容放入Model项目的csproj文件中:

<PropertyGroup>
  <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles> 
</PropertyGroup>

【讨论】:

我尝试了一些方法,例如删除所有表,然后删除数据库,删除迁移等。但都没有奏效。最后,这个答案非常完美。 这个问题在 .Net 5 中修复了吗?【参考方案6】:

只需尝试查看迁移 ModelSnapshot.cs 文件,了解表名称、关系创建(在代码末尾)方面的差异。

【讨论】:

【参考方案7】:

我遇到了类似的问题,但提供的答案都没有解决它。在查看了我的.csproj-file 后,我发现 Visual Studio 在某些时候自动添加了以下几行:

<ItemGroup>
  <Compile Remove="Migrations\**" />
  <Content Remove="Migrations\**" />
  <EmbeddedResource Remove="Migrations\**" />
  <None Remove="Migrations\**" />
</ItemGroup>

删除此ItemGroup 后,更新我的数据库再次正常工作。

【讨论】:

【参考方案8】:

DbContext 类应该有无参数构造函数和带选项的构造函数。您必须覆盖 OnConfiguring。在其中指定了提供者,例如:

options.UseSqlServer(_connectionString);

代码示例:

public class AppDbContext : DbContext

    private const string _connectionString = "Data Source=....;App=EntityFramework";


    public AppDbContext(DbContextOptions<AppDbContext> options)
        : base(options)
     

    public AppDbContext() : base()
    
        
    


    public virtual DbSet<MyEntitie> Users  get; set; 


    protected override void OnConfiguring(DbContextOptionsBuilder options)
    
        if (options.IsConfigured)
        
            return;
        

        options.UseSqlServer(_connectionString);
    

最后使用命令行并运行此命令(键入项目的文件名,您的 DbContext 文件在哪里),或者您可以使用 nuget 包管理器控制台:

dotnet ef migrations -v -p App.csproj add Init

【讨论】:

如何修复 Entity Framework Core 2.0 中的 n+1 问题?

】如何修复EntityFrameworkCore2.0中的n+1问题?【英文标题】:Howtofixn+1probleminEntityFrameworkCore2.0?【发布时间】:2020-04-0813:34:38【问题描述】:我有这个代码varquery=DbContext.Set<WorkCertificate>().Include(u=>u.WorkCertificateWorkers).Include(u 查看详情

在 Entity Framework Core 2.0 中执行存储过程

】在EntityFrameworkCore2.0中执行存储过程【英文标题】:ExecutingStoredProcedureinEntityFrameworkCore2.0【发布时间】:2018-08-1316:24:24【问题描述】:有一个场景来执行存储过程并读取EFCore中的返回值,即返回单个值。我尝试使用此代码,但... 查看详情

Entity Framework Core 2.0 自动增量和主键映射

】EntityFrameworkCore2.0自动增量和主键映射【英文标题】:EntityFrameworkCore2.0autoincrementandprimarykeymapping【发布时间】:2018-06-1912:03:00【问题描述】:我正在将数据库优先项目转换为代码优先项目。我有以下课程,我正在使用EFCore2.0:p... 查看详情

Entity Framework Core 2.0:如何配置一次抽象基类

】EntityFrameworkCore2.0:如何配置一次抽象基类【英文标题】:EntityFrameworkCore2.0:Howtoconfigureabstractbaseclassonce【发布时间】:2018-10-0401:07:49【问题描述】:我有一个基础模型:publicabstractclassStatuspublicstringupdateUserNameget;set;然后是扩展... 查看详情

Entity Framework Core 2.0 Add-Migration 不会创建任何迁移文件

】EntityFrameworkCore2.0Add-Migration不会创建任何迁移文件【英文标题】:EntityFrameworkCore2.0Add-Migrationdoesn\'tcreateanymigrationfiles【发布时间】:2018-02-0117:21:16【问题描述】:最近从EFCore1.0迁移到EFCore2.0,运行良好。今天我添加了一个新表... 查看详情

如何告诉 Entity Framework 我的 ID 列是自动递增的(AspNet Core 2.0 + PostgreSQL)?

】如何告诉EntityFramework我的ID列是自动递增的(AspNetCore2.0+PostgreSQL)?【英文标题】:HowtotellEntityFrameworkthatmyIDcolumnisauto-incremented(AspNetCore2.0+PostgreSQL)?【发布时间】:2018-10-1613:59:16【问题描述】:代码很简单。Tag.cs实体:publicparti... 查看详情

如何防止 Entity Framework Core 2.0 重命名生成类中的表和列(数据库优先)

】如何防止EntityFrameworkCore2.0重命名生成类中的表和列(数据库优先)【英文标题】:HowtopreventEntityFrameworkCore2.0fromRenamingTablesandColumnsinGeneratedClasses(DatabaseFirst)【发布时间】:2017-10-2514:19:47【问题描述】:我一直在研究一个需要使... 查看详情

如何使用 Entity Framework Core 2.0 上的 lambda 语法在 LINQ 中实现 LEFT OUTER JOIN?

】如何使用EntityFrameworkCore2.0上的lambda语法在LINQ中实现LEFTOUTERJOIN?【英文标题】:HowcanIimplementaLEFTOUTERJOINinLINQusinglambdasyntaxonEntityFrameworkCore2.0?【发布时间】:2018-09-0805:19:49【问题描述】:我正在尝试在Linq中针对EntityFrameworkCore2.0D... 查看详情

如何在 Entity Framework Core 2.0 中从 DbDataReader 转换为 Task<IEnumerable<TEntity>>?

】如何在EntityFrameworkCore2.0中从DbDataReader转换为Task<IEnumerable<TEntity>>?【英文标题】:HowtoconvertfromDbDataReadertoTask<IEnumerable<TEntity>>inEntityFrameworkCore2.0?【发布时间】:2018-02-0114:57:00【问题描述】:我通过以下方 查看详情

使用 Entity Framework Core 进行审计跟踪

】使用EntityFrameworkCore进行审计跟踪【英文标题】:AudittrailwithEntityFrameworkCore【发布时间】:2018-07-2504:00:30【问题描述】:我有一个在SQLServer数据库上使用实体框架核心的ASP.NET核心2.0。我必须跟踪和审核用户对数据所做的所有事... 查看详情

Entity Framework Core 增量整数

】EntityFrameworkCore增量整数【英文标题】:EntityFrameworkCoreincrementinteger【发布时间】:2021-11-1615:04:57【问题描述】:我正在寻找与以下SQL语句等效的EFCoreC#:UPDATETheTableSETRevisionId=RevisionId+1WHEREnotPk=@someValue解决方案不应受到竞争条件... 查看详情

Entity Framework Core - 计算字段排序

】EntityFrameworkCore-计算字段排序【英文标题】:EntityFrameworkCore-SortingonCalculatedField【发布时间】:2021-02-0216:43:28【问题描述】:我有一个类似的模型:PublicclassItempublicintIdget;set;publicstringNameget;set;publicDateTime?StartTimeget;set;publicDate 查看详情

如何使用 Entity Framework Core 进行全文搜索?

】如何使用EntityFrameworkCore进行全文搜索?【英文标题】:HowdoyoudofulltextsearchwithEntityFrameworkCore?【发布时间】:2019-03-1109:23:43【问题描述】:我有以下疑问:SELECTAnimals.nameFROMAnimalsWHERECONTAINS(*,\'felineANDblack\');我无法将其转换为Entity... 查看详情

Entity Framework Core 获取实体列名

】EntityFrameworkCore获取实体列名【英文标题】:EntityFrameworkCoregetentitycolumnname【发布时间】:2022-01-1911:37:39【问题描述】:我在动态返回表列名时遇到了一些问题。我在DDD标准中创建了一个ASPnetcore3.1项目,我使用的是EntityFrameworkCo... 查看详情

Entity Framework Core 不会更新 ICollection

】EntityFrameworkCore不会更新ICollection【英文标题】:EntityFrameworkCorewillnotupdateICollection【发布时间】:2020-04-2808:09:10【问题描述】:尝试对具有嵌套列表的实体执行更新。无论我做什么,我都会不断收到此错误。我试过这个:Updating... 查看详情

Entity Framework Core 2.1 中的 ReverseEngineeringGenerator

】EntityFrameworkCore2.1中的ReverseEngineeringGenerator【英文标题】:ReverseEngineeringGeneratorinEntityFrameworkCore2.1【发布时间】:2018-09-2911:37:35【问题描述】:基于RowanMiller先生的thisarticle,我想通过代码使用EFCore脚手架系统。//Addbaseservicesforsc... 查看详情

EF6 System.Data.Entity.Core.EntityKey 在 Entity Framework Core 中的等价物是啥?

】EF6System.Data.Entity.Core.EntityKey在EntityFrameworkCore中的等价物是啥?【英文标题】:WhatistheequivalentforEF6System.Data.Entity.Core.EntityKeyinEntityFrameworkCore?EF6System.Data.Entity.Core.EntityKey在EntityFrameworkCore中的等价物是什么?【发布 查看详情

Entity Framework Core 服务默认生命周期

】EntityFrameworkCore服务默认生命周期【英文标题】:EntityFrameworkCoreservicedefaultlifetime【发布时间】:2016-09-2705:20:32【问题描述】:在ASP.NETCore应用程序中,我可以像这样通过DI注册DbContextservices.AddDbContext<Models.ShellDbContext>(options=... 查看详情