添加控制器时,如何使用从“新数据上下文”生成的DbContext在SmarterASP中发布ASP.NET MVC项目

时间:2019-07-18 11:38:09

标签: c# asp.net-mvc connection-string publishing

我没有发布asp.mvc Web应用程序的经验,只是通过本教程https://www.youtube.com/watch?v=gYK9nKHkX60开始学习。当他打开他的Web.config文件时,我在大约4:26分钟的时间注意到了我的问题,他只有一个连接字符串,而我却有两个:我在搭建第一个控制器时生成的DefaultConnection和DbContext。尽管如此,我仍然按照以下说明进行学习:

  1. 从SmarterASP粘贴connectionString(注释掉其余部分)
  2. 用与我的连接字符串相同的名称更改IdentityModels.cs中的DbContext
  3. 在程序包管理器中运行更新数据库

但是,执行步骤3会引发此错误

  

“外键'FK_dbo.QualificationMaps_dbo.Provinces_ProvinceId'引用了无效的表'dbo.Provinces'。”

我的问题似乎不是在发布上,而是对DbContext或connectionStrings的工作方式了解为零,因此,如果有人可以根据我在创建项目时几乎将所有东西都放在架子上的情况向我解释问题,我将不胜感激。

我生成的DbContext看起来像这样:

QMTrackingContext.cs

public class QMTrackingContext : DbContext
    {

        public QMTrackingContext() : base("name=QMTrackingContext")
        {
        }

        public System.Data.Entity.DbSet<QMTracking.Models.Province> Provinces { get; set; }

        public System.Data.Entity.DbSet<QMTracking.Models.Region> Regions { get; set; }

        public System.Data.Entity.DbSet<QMTracking.Models.QualificationMap> QualificationMaps { get; set; }
    }
}

我的模型如下:

Region.cs

public class Region
    {
        public int Id { get; set; }
        [DisplayName("Region")]
        public string RegionName { get; set; }
        public virtual ICollection<Province> Provinces { get; set; }
    }

Province.cs

public class Province
    {
        public int Id { get; set; }
        public int RegionId { get; set; }        
        public virtual Region Region { get; set; }
        public string ProvinceName { get; set; }
        public virtual ICollection<QualificationMap> QualificationMaps { get; set; }
    }

QualificationMap.cs

public class QualificationMap
    {
        public int Id { get; set; }
        public int ProvinceId { get; set; }
        public virtual Province Province { get; set; }
        public string QMCode { get; set; }
     }

0 个答案:

没有答案