ef迁移显示空的up()down()方法(代码片段)

author author     2023-05-13     642

关键词:

我有一个当前的第二个版本的本地数据库,现在应该转到它的第三个版本。

以前迁移的代码是由另一个程序员生成的,所以我假设我在这里做错了。

在我的模型中有大约30个类,在模型文件夹中有一个映射文件夹,它包含这30个类的映射。

所以现在我以与之前的类相同的方式添加了1个新类,然后在Package Manager Console中运行add-migration命令。

不幸的是我得到了一个空的迁移Up()和Down()方法。

当我查看数据库时,有一个__migrationHistory可用于前两次迁移。如果我现在运行我的应用程序,也会添加第三个迁移,但显然没有创建新表,因为它不在Up()方法中。

我能做错什么?

我认为在搭建以前的迁移时会出现问题......就像它找不到我添加的新的Code-First类一样。

这是我的命令:

add-migration "1.2" -verbose -ProjectName "MyEFproject"

我假设脚手架不知道在哪里寻找新类...或者按照惯例,所有模型类都只是在项目中?

添加迁移的结果:

namespace MyProject.Migrations

using System;
using System.Data.Entity.Migrations;

public partial class _1002 : DbMigration

    public override void Up()
    
    

    public override void Down()
    
    


新模型类的示例:

using System;
using System.Collections.Generic;

namespace MyProject.Models

public partial class MyTable


    public string SomeId  get; set; 
    public string SomeText  get; set; 




新Mapping类的示例

using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;

namespace MyProject.Models.Mapping

 public class MyTableMap : EntityTypeConfiguration<MyTable>


    public MyTableMap()
    
        // Primary Key
        this.HasKey(t => t.SomeId);

        // Properties
        this.Property(t => t.SomeText)
            .IsRequired()
            .HasMaxLength(30);



        // Table & Column Mappings
        this.ToTable("MyTable", "database");
        this.Property(t => t.SomeId).HasColumnName("SomeId");
        this.Property(t => t.SomeText).HasColumnName("SomeText");


    




   

谢谢,

答案

您需要将表格添加到DbContext类的实现中,例如

public class MyDatabaseEntities : DbContext 
    public virtual DbSet<MyTable> MyTable  get; set; 

另一答案

我想在我的数据库中添加一个额外的列后,我遇到了这个问题。因为除非表是空的,否则我的数据不会播种,我删除了所有表和迁移以重新创建表。当我尝试迁移时,迁移具有空的上下方法。

我通过删除快照文件解决了这个问题,因为这会产生问题。所以我删除了所有迁移和快照文件,再次添加了迁移并运行了更新数据库。使用我的新列成功更新了表和迁移。

但是,更好的方法是运行down方法并在执行测试数据时删除表。显然,在现实世界中删除表格是不好的。

另一答案

对我来说问题是应该对应于表id的Id属性被命名为FeedbackId。我改为“Id”,然后Up / Down不再是空的。 Dunno,如果那可以帮助某种程度

另一答案

我能够通过从_MigrationHistory表中删除上次迁移的记录来解决此问题。在将新模型对象的DbSet添加到DbContext类之前,此记录未正确创建。删除后,使用正确的Up()和Down()方法创建了新的迁移。

另一答案

我有这个问题,因为我忘记添加get;在我的变量名之后设置;

另一答案

在将现有EF核心数据上下文回滚为空时,在我删除伴随迁移的ApplicationDbContextModelSnapshot之前,我的迁移不会生成。

此类是自动生成的,需要与您当前的迁移级别保持一致。

另一答案

在我的例子中,datacontext项目是一个类lib项目。它与asp.net mvc 5项目的启动项目不同。现在错误地,启动项目中的连接字符串指向不同的不同数据库。

因此,请确保datacontext项目和启动项目指向同一数据库。还可以使用问题中提到的完整命令,如下所示。你也可以包括-Force。

add-migration "InitialMigration" -verbose -ProjectName "MyEFproject" -Force
另一答案

Also: Make sure any new properties you've added are public!

在我的情况下,我正在进行迁移,其中我将字段添加到现有表格,最后是空的UpDown方法,

我有这样的事情:

public bool ExistingField  get; set; 
bool NewField  get;set; 

您看得出来差别吗...?


如果您犯了这个错误,请使用相同的名称重新运行迁移(您可能需要添加-Force参数来将其填满)。

PS。在尝试执行任何类型的EF命令之前,请务必确保项目完全构建。如果您的项目尚未构建,那么您就会遇到麻烦。

另一答案

当我错误地使用1-many关系而不是多次关系(即我忘记了导航属性之一)时,我添加了空迁移。我有一个种子文件,期望有很多关系,然后在迁移期间失败导致迁移失败。不幸的是没有输出使得显而易见的是问题,只有通过使用Entity Framework Power Tools (v4 but installed in VS2015),我在视觉上看到了错误的关系,并意识到这可能是原因。

另一答案

我必须使用最新的迁移更新数据库,然后添加此参数-TargetMigration:"your-migration-name"

可能它会告诉你,我们尝试过的下一辆车会丢失数据。如果你能负担得起它附加-Force

然后我尝试添加我的新Add-Migration,它不是空的。

如果上面抛出异常,您可能需要做的最后一件事是去SQL Server Management Studio并删除最后一个Automatic migration并尝试再次添加它。

另一答案

从Migration文件夹中删除所有内容!之后添加迁移。

ef数据迁移(代码片段)

在项目中使用EntityFramework的CodeFirst模式,进行数据迁移时,Migration文件夹中存放的是每一次Entity的修改如何同步到数据的操作方法,每个文件中都只有Up和Down这两个方法。例如第一次数据迁移时,会创建数据表,在程序包管理控... 查看详情

C# 代码优先迁移,向上/向下?

】C#代码优先迁移,向上/向下?【英文标题】:C#Code-Firstmigration,up/down?【发布时间】:2012-04-0321:35:34【问题描述】:开始在包管理器控制台中使用add-migration命令为我的模型生成迁移。我的问题是,上下方法。我假设down方法的目... 查看详情

Rails 迁移:self.up 和 self.down 与更改

】Rails迁移:self.up和self.down与更改【英文标题】:Railsmigrations:self.upandself.downversuschange【发布时间】:2012-05-0901:22:46【问题描述】:看起来新的rails版本与self.up和self.down方法相比有“变化”。那么当一个人必须回滚迁移时会发生... 查看详情

sh按子网pingip并显示简单的up/down状态(代码片段)

查看详情

opencv--图像金字塔(代码片段)

图像金字塔高斯金字塔高斯金字塔:向下采样方法(缩小)高斯金字塔:向上采样方法(放大)img=cv2.imread("AM.png")cv_show(img,‘img‘)print(img.shape)效果: up=cv2.pyrUp(img)cv_show(up,‘up‘)print(up.shape)效果:down=cv2.pyrDown(img)cv_show(down,... 查看详情

20.2.翻译系列:ef6中基于代码的数据库迁移技术ef6code-first系列(代码片段)

...ased-migration-in-code-first.aspx在前面的一节中,你学习了自动迁移技术,当实体改变的时候,自动进行数据库迁移。这里你将会学习基于代码的数据库迁移技术。基于代码的数据库迁移技术,在迁移的时候,提供了更多的控制。例如... 查看详情

laravel版本迁移(代码片段)

...果不知道命令怎么写的话,可以使用phpartisan2、创建版本迁移文件:phpartisanmake:migration文件的名称(create_users_table)建议这种命名规范,users为表名+s3、该文件存在app/database/migrations中,进入该文件,有两个方法,up()用于运行,down()... 查看详情

分数的练习(代码片段)

intgcd(inta,intb)if(b==0)return0;elsereturngcd(b,a%b);structFractionintup,down;;FractionReduction(Fractionresult)if(result.down<0)result.up=-result.up;result.down=-result.down;if(result.up== 查看详情

当我的代码迁移落后于数据库迁移时,Entity Framework 如何找到 Down() 方法?

】当我的代码迁移落后于数据库迁移时,EntityFramework如何找到Down()方法?【英文标题】:HowdoesEntityFrameworkfindDown()methodswhenmycodemigrationsarebehindmydatabasemigrations?【发布时间】:2018-08-1920:22:33【问题描述】:假设我是一名开发人员,... 查看详情

同心圆(代码片段)

importturtleturtle.circle(100)turtle.up()turtle.goto(0,50)turtle.down()turtle.circle(50)turtle.up()turtle.goto(0,-50)turtle.down()turtle.circle(150)turtle.up()turtle.goto(0,-100)turtle.down()turtle.ci 查看详情

a1088.rationalarithmetic(代码片段)

题意模拟分数的四则运算思路分析模拟,在输出过程中,若分子>分母,需要分离出整数部分与分数部分,并且如果项为负数需要带上()#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;structfractionllup;//分子lldown;//分母a,b,result;ll... 查看详情

ef完成指定数据迁移(代码片段)

Update-Database-ConfigurationTypeNameBmw.Services.DealerService.WebApiHost.MigrationsOfDealerDB.DealerDBConfiguration//-ConfigurationTypeName后跟的是配置文件的类名  查看详情

leetcode376(代码片段)

1classSolution:2defwiggleMaxLength(self,nums:List[int])->int:3n=len(nums)4ifn==0:5return06up,down=1,17foriinrange(1,n):8ifnums[i]>nums[i-1]:9up=down+110elifnums[i]<nums[i-1]:11down=up+112retu 查看详情

turtle同心圆(代码片段)

importturtleturtle.circle(100)turtle.up()turtle.goto(0,50)turtle.down()turtle.circle(50)turtle.up()turtle.goto(0,-50)turtle.down()turtle.circle(150)turtle.up()turtle.goto(0,-100)turtle.down()turtle.ci 查看详情

骑士。 EF 代码优先迁移

】骑士。EF代码优先迁移【英文标题】:Rider.EFCodeFirstMigrations【发布时间】:2018-01-0322:23:59【问题描述】:是否有一种简单的方法可以在VisualStudio之外使用旧的EF进行迁移?如果可能的话,我想通过RiderIDE来做。【问题讨论】:您... 查看详情

递归执行过程探究(c)(代码片段)

c语言递归的执行过程探究 引用《cprimerplus》第五版9.3.1递归的使用1/*recur.c--recursionillustration*/2#include<stdio.h>3voidup_and_down(int);45intmain(void)67up_and_down(1);8return0;91011voidup_and_down(intn)1213printf("Level%d:nlocation%p",n,&n);/*1*/14if(n<4)... 查看详情

luogu3565bzoj3522&bzoj4543(代码片段)

hotel解题报告1方法1我们可以用(down[i][j])表示在(i)的子树里面距离为(j)的节点的个数,(up[i][j])表示通过(i)的父亲走到的距离为(j)的点的个数。[down[i][j]=sum_all\_sondown[son][j-1]][up[i][j]=up[fa][j-1]+down[fa][j-1]-down[i][j-2]]对于每个(x),对于它... 查看详情

bzoj4358:permu莫队算法(代码片段)

【题意】给定长度为n的排列,m次询问区间[L,R]的最长连续值域。n<=50000。【算法】莫队算法【题解】考虑莫队维护增加一个数的信息:设up[x]表示数值x往上延伸的最大长度,down[x]表示数值x往下延伸的最大长度。增加一个数x时... 查看详情