C# .Net SQL数据库无法识别模型变量

C# .Net SQL数据库无法识别模型变量,c#,asp.net,.net,visual-studio-2015,sql-server-2014,C#,Asp.net,.net,Visual Studio 2015,Sql Server 2014,我正在处理一个.NetAPI项目。问题是,我有一台速度很慢的电脑,当时我正在使用VS2013。过了一段时间,我安装了VS2015,它工作得非常好,直到我删除了VS2013。此外,vs2013的卸载相当困难,因为我必须遵循以下指南:(下载整个安装程序,并使用命令行)。现在的问题是,现在SQLServer不接受我传递的Managerid和Workerid。 我的文档类: public class ConstructionSite { public int Id { get; set; }

我正在处理一个
.Net
API项目。问题是,我有一台速度很慢的电脑,当时我正在使用
VS2013
。过了一段时间,我安装了
VS2015
,它工作得非常好,直到我删除了
VS2013
。此外,
vs2013
的卸载相当困难,因为我必须遵循以下指南:(下载整个安装程序,并使用命令行)。现在的问题是,现在SQLServer不接受我传递的Managerid和Workerid。 我的文档类:

 public class ConstructionSite
 {
    public int Id { get; set; }
    public int CreatorId { get; set; }
    public List<int> ManagerIds { get; set; }
    public List<int> WorkerIds { get; set; }
    public DateTime CreatedAt { get; set; }
    public bool IsActive { get; set; }
 }
公共类构造站点
{
公共int Id{get;set;}
public int CreatorId{get;set;}
公共列表管理器{get;set;}
公共列表workerid{get;set;}
public DateTime CreatedAt{get;set;}
公共bool IsActive{get;set;}
}
但当我点击“显示表格数据”按钮时,它只提供这种类型的视图:

我试图更改Configuration.cs类种子方法,如下所示:

protected override void Seed(ReportRest.Models.ApplicationDbContext context)
{
    context.ConstructionSites.AddOrUpdate(new ConstructionSite
    {
        CreatorId = 2,
        CreatedAt = new DateTime(2000, 01, 01),
        IsActive = false,
        ManagerIds = new List<int> {1},
        WorkerIds = new List<int> {2},
    });
}
public class MyDbContext : DbContext
{
    public DbSet<ConstructionSite> ConstructionSites { get; set; }
    public DbSet<Manager> Managers { get; set; }
    public DbSet<Worker> Workers { get; set; }

    public MyDbContext()
        : base("YourConnectionStringName")
    {

    }
}

public class ConstructionSite
{
    public Guid Id { get; set; }
    public int CreatorId { get; set; }
    public List<Manager> Managers { get; set; }
    public List<Worker> Workers { get; set; }
    public DateTime CreatedAt { get; set; }
    public bool IsActive { get; set; }
}

public class Manager
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public Guid ConstructionSiteId { get; set; }
}

public class Worker
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public Guid ConstructionSiteId { get; set; }
}
protected override void Seed(ReportRest.Models.ApplicationDbContext上下文)
{
context.ConstructionSites.AddOrUpdate(新的ConstructionSite
{
CreatorId=2,
CreatedAt=新的日期时间(2000,01,01),
IsActive=false,
ManagerIds=新列表{1},
WorkerIds=新列表{2},
});
}
然后,我删除了现有的Migrations文件夹,打开Nugget Package Manager控制台并启动以下命令: 启用迁移 首先添加迁移 更新数据库。
不幸的是,这并没有帮助我恢复经理和工人身份。所以,在处理不稳定的Microsoft设置之前,我想问一下,是否有办法提醒我的数据库忘记变量。提前谢谢

不确定缺少哪些列,因为所有4个普通列都显示在数据库中,并且这两个列表通常应存储在自己的数据库表中

但是,如果您在ASP.net和EntityFramework中使用默认设置,并且已经有一个Migrations文件夹,那么数据库中还应该有一个“\u MigrationHistory”表

也就是说,如果您删除了旧的Migrationsfolder,您还需要删除表中的条目。在这之后,您可以创建一个新的“addmigrationinitialcreate”,并且应该获得当前代码库的整个第一次迁移

//要创建新的初始Datbase更新以获得用于将来更改的工作迁移,请执行以下操作:

  • 添加新的迁移
  • 然后从新的迁移文件中剪切Up()和Down()方法的内容
  • 运行更新数据库(为_MigrationHistory-table创建条目)
  • 在迁移文件中使用Strg-Z来备份原始内容
  • 之后,您可以运行添加迁移和更新数据库,以便将来更改模型

  • 不确定缺少哪些列,因为所有4个普通列都显示在数据库中,并且这两个列表通常应存储在自己的数据库表中

    但是,如果您在ASP.net和EntityFramework中使用默认设置,并且已经有一个Migrations文件夹,那么数据库中还应该有一个“\u MigrationHistory”表

    也就是说,如果您删除了旧的Migrationsfolder,您还需要删除表中的条目。在这之后,您可以创建一个新的“addmigrationinitialcreate”,并且应该获得当前代码库的整个第一次迁移

    //要创建新的初始Datbase更新以获得用于将来更改的工作迁移,请执行以下操作:

  • 添加新的迁移
  • 然后从新的迁移文件中剪切Up()和Down()方法的内容
  • 运行更新数据库(为_MigrationHistory-table创建条目)
  • 在迁移文件中使用Strg-Z来备份原始内容
  • 之后,您可以运行添加迁移和更新数据库,以便将来更改模型

  • 如果你想与经理和员工建立某种关系,你必须创建如下内容:

    protected override void Seed(ReportRest.Models.ApplicationDbContext context)
    {
        context.ConstructionSites.AddOrUpdate(new ConstructionSite
        {
            CreatorId = 2,
            CreatedAt = new DateTime(2000, 01, 01),
            IsActive = false,
            ManagerIds = new List<int> {1},
            WorkerIds = new List<int> {2},
        });
    }
    
    public class MyDbContext : DbContext
    {
        public DbSet<ConstructionSite> ConstructionSites { get; set; }
        public DbSet<Manager> Managers { get; set; }
        public DbSet<Worker> Workers { get; set; }
    
        public MyDbContext()
            : base("YourConnectionStringName")
        {
    
        }
    }
    
    public class ConstructionSite
    {
        public Guid Id { get; set; }
        public int CreatorId { get; set; }
        public List<Manager> Managers { get; set; }
        public List<Worker> Workers { get; set; }
        public DateTime CreatedAt { get; set; }
        public bool IsActive { get; set; }
    }
    
    public class Manager
    {
        public Guid Id { get; set; }
        public string Name { get; set; }
        public Guid ConstructionSiteId { get; set; }
    }
    
    public class Worker
    {
        public Guid Id { get; set; }
        public string Name { get; set; }
        public Guid ConstructionSiteId { get; set; }
    }
    
    公共类MyDbContext:DbContext
    {
    公共DbSet构造站点{get;set;}
    公共数据库集管理器{get;set;}
    公共数据库集工作程序{get;set;}
    公共MyDbContext()
    :base(“YourConnectionString名称”)
    {
    }
    }
    公共类构造站点
    {
    公共Guid Id{get;set;}
    public int CreatorId{get;set;}
    公共列表管理器{get;set;}
    公共列表工作程序{get;set;}
    public DateTime CreatedAt{get;set;}
    公共bool IsActive{get;set;}
    }
    公共班级经理
    {
    公共Guid Id{get;set;}
    公共字符串名称{get;set;}
    公共Guid构造站点ID{get;set;}
    }
    公社工人
    {
    公共Guid Id{get;set;}
    公共字符串名称{get;set;}
    公共Guid构造站点ID{get;set;}
    }
    

    这将创建您想要的关系

    如果您想要与经理和员工建立关系,您必须创建如下内容:

    protected override void Seed(ReportRest.Models.ApplicationDbContext context)
    {
        context.ConstructionSites.AddOrUpdate(new ConstructionSite
        {
            CreatorId = 2,
            CreatedAt = new DateTime(2000, 01, 01),
            IsActive = false,
            ManagerIds = new List<int> {1},
            WorkerIds = new List<int> {2},
        });
    }
    
    public class MyDbContext : DbContext
    {
        public DbSet<ConstructionSite> ConstructionSites { get; set; }
        public DbSet<Manager> Managers { get; set; }
        public DbSet<Worker> Workers { get; set; }
    
        public MyDbContext()
            : base("YourConnectionStringName")
        {
    
        }
    }
    
    public class ConstructionSite
    {
        public Guid Id { get; set; }
        public int CreatorId { get; set; }
        public List<Manager> Managers { get; set; }
        public List<Worker> Workers { get; set; }
        public DateTime CreatedAt { get; set; }
        public bool IsActive { get; set; }
    }
    
    public class Manager
    {
        public Guid Id { get; set; }
        public string Name { get; set; }
        public Guid ConstructionSiteId { get; set; }
    }
    
    public class Worker
    {
        public Guid Id { get; set; }
        public string Name { get; set; }
        public Guid ConstructionSiteId { get; set; }
    }
    
    公共类MyDbContext:DbContext
    {
    公共DbSet构造站点{get;set;}
    公共数据库集管理器{get;set;}
    公共数据库集工作程序{get;set;}
    公共MyDbContext()
    :base(“YourConnectionString名称”)
    {
    }
    }
    公共类构造站点
    {
    公共Guid Id{get;set;}
    public int CreatorId{get;set;}
    公共列表管理器{get;set;}
    公共列表工作程序{get;set;}
    public DateTime CreatedAt{get;set;}
    公共bool IsActive{get;set;}
    }
    公共班级经理
    {
    公共Guid Id{get;set;}
    公共字符串名称{get;set;}
    公共Guid构造站点ID{get;set;}
    }
    公社工人
    {
    公共Guid Id{get;set;}
    公共字符串名称{get;set;}
    公共Guid构造站点ID{get;set;}
    }
    

    这创建了您想要的关系

    当您说“不幸的是,这没有帮助我恢复丢失的列”时,您是什么意思。你指的是哪列?我缺少ManagerIds和WorkerIds列。对不起,我没来