【问题标题】:MVC Code First - Database not generatingMVC 代码优先 - 数据库未生成
【发布时间】:2016-08-06 07:18:06
【问题描述】:

我正在使用代码优先方法开发 MVC 应用程序。我在一个单独的类库项目中定义了我的模型类。我还定义了我的 DBContext 类。我已确保我的 DBContext 类与我的连接字符串具有相同的名称。出于某种原因,我没有看到创建的数据库。我的理解是通过定义你的类和连接字符串,实体框架会生成数据库。我确信我的连接字符串可以与我的其他应用程序一起正常工作。有人能告诉我问题是什么

   public class Customer
    {
        public int CustomerId { get; set; }
        public string Name { get; set; }
        public string Address { get; set; }
        public string Phone { get; set; }
        public string Email { get; set; }

    }
 public class TestDbContext : DbContext
    {
        public DbSet<Customer> Customer { get; set; }
    }

App.Config 类

<connectionStrings>
    <add name="TestDbContext" connectionString="Data Source=XYZ-PC\MSSQLSERVER2014;Initial Catalog=SalesOrderManagement;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" providerName="System.Data.SqlClient" />
  </connectionStrings>

【问题讨论】:

  • EF 的哪个版本?
  • 它是最新的。 6.1.3

标签: entity-framework model-view-controller


【解决方案1】:

在您调用上下文之前,EF 不会生成数据库。您可以通过添加带有所选初始化程序的静态构造函数来确保这一点:

public class TestDbContext : DbContext
{

    static TestDbContext()
    {
        Database.SetInitializer(new DropCreateDatabaseIfModelChanges<TestDbContext>());
    }

    public DbSet<Customer> Customer { get; set; }
}

【讨论】:

  • 抱歉,它无法识别 EntityModelContext()。你的意思是静态 TestDbContext 作为consructor
  • 是的,它是一个构造函数。已编辑。
  • 我构建了项目,但似乎没有创建数据库
  • 是的,你需要访问你的上下文来触发惰性创建。 stackoverflow.com/questions/17303710/…
  • public TestDbContext() : base("name=TestDbContext") { Database.SetInitializer(new CreateDatabaseIfNotExists());数据库.初始化(假); }
猜你喜欢
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
  • 2019-06-04
  • 2023-03-11
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多