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

时间:2016-01-31 13:18:26

标签: c# asp.net .net visual-studio-2015 sql-server-2014

我正在使用.Net API项目。麻烦的是,我有一台慢速计算机而且我正在使用VS 2013。一段时间后我安装了VS 2015,它完全有效,直到我删除了VS 2013。此外,卸载VS 2013非常困难,因为我必须跟进本指南: Cannot uninstall, install or repair Visual Studio 2012 & 2013(下载整个设置,并使用命令行)。现在的问题是,现在SQL服务器不接受我传递的ManagerIds和WorkerIds。 我的文档类:

 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; }
 }

但是当我点击&#34;显示表数据&#34;按钮,它只给我这种类型的视图: a busy cat

我尝试更改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},
    });
}

然后我删除了现有的Migrations文件夹,打开了Nugget Package Manager Console并解除了这些命令: 启用的迁移 首先添加迁移 更新数据库。 不幸的是,这并没有帮助我恢复ManagerIds和WorkerIds。所以,在搞乱不稳定的微软设置之前,我想问你是否有办法提醒我的数据库忘记了变量。提前谢谢!

2 个答案:

答案 0 :(得分:2)

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

但是如果您使用ASP.net和EntityFramework的默认设置并且您已经有一个Migrations文件夹,那么在数据库中也应该有一个&#34; __ MigrationHistory&#34; -Table。

意味着,如果您删除了旧的Migrations文件夹,则还需要删除该表的条目。之后,您可以创建一个新的&#34; Add-Migration InitialCreate&#34;并且应该首先完成当前代码库的迁移。

//用于创建新的初始Datbase-Update以获得未来更改的工作迁移:

  1. 添加新的迁移,
  2. 然后从新的迁移文件
  3. 中删除Up()和Down()Methode的内容
  4. 运行Update-Database(为__MigrationHistory-table创建条目)
  5. 用于备份原始内容的迁移文件中的Strg-Z
  6. 之后,您可以运行添加迁移和更新数据库,以便将来更改模型

答案 1 :(得分:1)

如果你想与经理和工人建立一对一的关系,你必须创建这样的东西:

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; }
}

这会创建您想要的关系