发布时间:2021-12-18 20:39:40来源:本站阅读(778)
EF可以根据项目中的模型自动创建数据库。Entity Framework数据库初始化有四种策略
一、 每次运行都会创建新的数据库
Database.SetInitializer<MyContext>(new DropCreateDatabaseAlways<
MyContext >());
二、只有第一次运行才会创建新的数据库(默认的方式)
Database.SetInitializer<
MyContext >(new CreateDatabaseIfNotExists<
MyContext >());
三、 修改模型后再次运行会创建新的数据库
Database.SetInitializer<
MyContext >(new DropCreateDatabaseIfModelChanges<
MyContext >());
四、使用自己配置的数据库,请到:web.config中配置自己的连接字符串,注意连接字符串的名称应与上下文:
MyContext 的名字一致。
还有一种在列表中没有体现,就是MigrateDatabaseToLatestVersion ,在配置自动化迁移(Automated Migration)中会使用。
如果要取消数据库初始化策略,代码为:
Database.SetInitializer(null);
定义数据库初始化程序的示例代码如下所示:
public class MyInitializer : CreateDatabaseIfNotExists<MyContext>
{
protected override void Seed(MyContext context)
{
base.Seed(context);
}
}
在配置文件中设置数据库初始化策略,如下
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="DatabaseInitializerForType SchoolDataLayer.SchoolDBContext, SchoolDataLayer"
value="SchoolDataLayer.SchoolDBInitializer, SchoolDataLayer" />
</appSettings>
</configuration>
EF的约定优先原则:
EF会尽可能的使用约定而非配置,如果在程序运行时,不按照上述四方法配置具体的数据库连接方式,EF将按照约定创建一个连接,也就是根据模型关系创建一个数据库。
EF创建新数据库的过程如下:
首先EF将尝试连接SQLserverExpress的本地实例,并且查找与上下文:
MyContext 名字相同的数据库,如果EF找不到这个数据库,EF则会根据约定创建一个数据库。
关键字: code first ef
上一篇: 一次失误的配置
下一篇: .net core 6.0使用记录一
3335
1584
951
1437
608
887
1520
922
1635
1176
9593
5996
5523
5116
4567
4274
3415
3336
3335
3269
了解了