03节-数据库初始化的问题
先创建好了model实体对象,加入到上下文中context中,在程序入口的地方global.aspx.cs这里给初始化:
- 创建model
- 创建context
- 在context中加入model属性DbSet属性
- web.config中加入连接字符串
- context的构造函数中,使用基类构造函数base(“name=数据库连接串名称”)
- global.aspx.cs这里初始化数据库
在global中的protected void Application_Start()方法加入数据库初始化方法:
private void InitDataBase()
{
//这里面实现初始化数据库
using (var cfContext = new CfContext())
{
//如果不存在数据库则创建
bool res = cfContext.Database.CreateIfNotExists();
}
}
数据库要先关掉连接才能看到。
//2 每次重新运行都创建数据库 不管数据库中有没有数据库
Database.SetInitializer(new DropCreateDatabaseAlways<CfContext>());
using (var context = new CfContext())
{
context.Database.Initialize(true);
}
第二种方式,就是不管里面有没有数据库,都重新创建,但是其实是先删掉原来的数据库再重新新增数据库,所以如果有测试数据的话,最好不要使用这种方式。
//3 实体模型改变了才会去创建数据库,没有改变就不会创建
//Database.SetInitializer(new DropCreateDatabaseIfModelChanges<CfContext>());
//using (var context = new CfContext())
//{
// context.Database.Initialize(true);
//}
适合开发的时候,只要实体有改变就会重新创建表。
csharpcsharp//4 关闭数据库策略 数据我们自己来维护,自己创建实体改变实体 自己添加数据表字段
Database.SetInitializer<CfContext>(null);
Previous: 02节-搭建EF环境
Next: 04节-使用EF CodeFirst来插入数据表