实体框架正在创建不包含表的数据库

本文关键字:包含表 数据库 创建 框架 实体 | 更新日期: 2023-09-27 18:00:59

我正在创建一个ASP.NET MVC web应用程序。我已经安装了实体框架。我做了以下模型:

public class EmploymentHistory
{
    public Guid Id { get; set; }
    public Guid UserId { get; set; }
    public int DateFromMonth { get; set; }
    public int DateFromYear { get; set; }
    public int DateToMonth { get; set; }
    public int DateToYear { get; set; }
    public string CompanyName { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string Zip { get; set; }
    public string County { get; set; }
    [DisplayName("I was unemployed during this time")]
    public bool IsUnemployed { get; set; }
}

我已经创建了以下DbContext类:

public class EmploymentDbContext : DbContext
{
    public DbSet<EmploymentHistory> EmploymentsHistory { get; set; }
}

我的Web.config文件中的连接字符串如下所示:

<connectionStrings>
<add name="EmploymentDbContext" connectionString="Data Source=(LocalDb)'v11.0;Initial Catalog=EmploymentsHistory;Integrated Security=False" providerName="System.Data.SqlClient"/>
</connectionStrings>

当我运行该项目时,我可以在Visual Studio的服务器资源管理器中看到数据库EmploymentsHistory,但当我展开它,然后展开它的表时,我看不到应该看到的EmploymentHistory表。

实体框架正在创建不包含表的数据库

尝试向EmploymentDbContext类添加一个构造函数,结果如下:

public class EmploymentDbContext : DbContext
{
    // constructor, which will also call DbContext's (base) constructor
    public EmploymentDbContext() : base("name=EmploymentDbContext") { } 
    public DbSet<EmploymentHistory> EmploymentsHistory { get; set; }
}

通过调用DbContext的构造函数,您指定了希望DbContext的子类附加到的连接字符串的名称。

编辑:

由于您目前似乎没有尝试在任何地方使用此连接,请尝试显式添加代码优先迁移。如果还没有,请在Package Manager控制台中运行enable-migrations。关闭它显示的配置屏幕,然后运行add-migration EmploymentHistory。等待它完成,然后运行update-database,看看是否修复了它。