MVC 代码优先 - 数据库未生成

Posted

技术标签:

【中文标题】MVC 代码优先 - 数据库未生成【英文标题】:MVC Code First - Database not generating 【发布时间】: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 【参考方案1】:

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

public class TestDbContext : DbContext


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

    public DbSet<Customer> Customer  get; set; 

【讨论】:

抱歉,它无法识别 EntityModelContext()。你的意思是静态 TestDbContext 作为consructor 是的,它是一个构造函数。已编辑。 我构建了项目,但似乎没有创建数据库 是的,你需要访问你的上下文来触发惰性创建。 ***.com/questions/17303710/… public TestDbContext() : base("name=TestDbContext") Database.SetInitializer(new CreateDatabaseIfNotExists());数据库.初始化(假);

以上是关于MVC 代码优先 - 数据库未生成的主要内容,如果未能解决你的问题,请参考以下文章

MVC 3 代码优先应用的数据

无法将数据添加到数据库 MVC 5 代码优先方法

我的 MVC 5 代码优先数据库在哪里创建? (不使用 AttachDbFilename)

关于数据结构的深度优先遍历和广度优先遍历以及最小生成树 第四大题的第一题

如何使用 crm 2011 实现 mvc 4 项目

.NET MVC 数据处理