C# 实体框架使用空迁移删除虚拟财产结果

C# 实体框架使用空迁移删除虚拟财产结果,c#,.net,entity-framework,C#,.net,Entity Framework,我已经搜索了空迁移,而那些解决方案(即干净的解决方案/构建)对我不起作用。我想知道是否还有更多的事情发生 我有一个实体 public class Term { public int Id { get; set; } public string Title { get; set; } public virtual Organization Organization { get; set; } } 在数据库中构建此实体时,它将创建一列“Organization\u Id”。

我已经搜索了空迁移,而那些解决方案(即干净的解决方案/构建)对我不起作用。我想知道是否还有更多的事情发生

我有一个实体

public class Term
{
    public int Id { get; set; }
    public string Title { get; set; }
    public virtual Organization Organization { get; set; }
}
在数据库中构建此实体时,它将创建一列“Organization\u Id”。组织实体是直截了当的。没什么奇怪的。通常在运行add migration时,它还会在指向组织实体的“Organization_Id”上创建外键约束和索引

我们正在删除与组织实体的链接。因此,我们自然会删除虚拟财产,然后运行添加迁移。我希望看到“Organization_Id”列被删除,但它是一个空的迁移类

public partial class termremoveorg : DbMigration
{
    public override void Up()
    {
    }

    public override void Down()
    {
    }
}
public class Organization
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Term> Terms { get; set; }
}
尝试了一百种不同的东西后,我不知所措。我甚至通过手动设置来手动添加删除列

public partial class termremoveorg : DbMigration
{
    public override void Up()
    {
        DropIndex("dbo.Terms", new[] { "Organization_Id" });
        DropForeignKey("dbo.Terms", "Organization_Id", "dbo.Organizations");
        DropColumn("dbo.Terms", "Organization_Id");
    }

    public override void Down()
    {
        AddColumn("dbo.Terms", "Organization_Id", c => c.Int());
        AddForeignKey("dbo.Terms", "Organization_Id", "dbo.Organizations", "Id");
        CreateIndex("dbo.Terms", "Organization_Id");
    }
}
但是当我运行更新数据库时,数据库表成功地删除了“Organization_Id”列。但是,当Seed()方法到达代码中的某个点时,我得到了以下错误:一些术语对象被插入到数据库中(它们不引用任何指向组织记录的链接)

谢谢你的帮助

更新#1 根据请求,这里是组织类

public partial class termremoveorg : DbMigration
{
    public override void Up()
    {
    }

    public override void Down()
    {
    }
}
public class Organization
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Term> Terms { get; set; }
}
公共类组织
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共虚拟ICollection项{get;set;}
}
仔细看这段代码,我发现有一个属性指向在运行add迁移之前未删除的术语


尝试一下,我也删除了这个属性,添加迁移按预期成功运行。

由于
1:M
Organization:Terms
的关系,您必须删除两个端点。换句话说,您必须删除
公共虚拟组织{get;set;}
上的
术语
公共虚拟ICollection Terms{get;set;}
上的
组织
。那么迁移脚本就不会有任何问题。

你能显示
组织
模型的代码吗?@Sampath I刚刚添加了组织代码。看着它,我意识到有一个属性指向术语类。哼!有时候,你会看着事情,却总是错过它。谢谢就这样。谢谢