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 5 代码优先数据库在哪里创建? (不使用 AttachDbFilename)