Entity Framework 小知识(一)

简介: Entity Framework 小知识(一)

零、EF初始化数据库策略

上一节我们演示的是在数据库不存在的情况下操作数据库的方法,但是某些情况下数据库是已经存在的(例如:对已有系统的升级改造扩展、DBA已经将数据库提前创建等等)。那么这种情况下我们该怎么办呢?这时我们就用到了EF数据库初始化的三种策略。这三种策略如下:


1.如果数据库不存在,则创建,存在,则不创建

Database.SetInitializer(new CreateDatabaseIfNotExists<EfDbContext>());

2. 不管数据库是否存在,都创建

Database.SetInitializer(new DropCreateDatabaseAlways<EfDbContext>());

3. 如果数据库模型发生变化,更新数据库

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<EfDbContext>());

注:以上三种策略需要在EF上下文派生类中的构造函数中定义。


上述三种策略是定义在代码中的,我们也可以将他们定义在配置文件中,我们以第三种策略为例,在 .config 文件中的AppSettings节点下配置:

<appSettings>
  <add key="DatabaseInitializerForType _2_1Code.EfDbContext,_2_1Code" value="System.Data.Entity.DropCreateDatabaseIfModelChanges,EntityFramework"/>
</appSettings>

注:DatabaseInitializerForType 后面是派生类的位置(命名空间.DbContext派生类),逗号后面是派生类所在的命名空间。

一、禁用初始化策咯

某些情况下我们不需要使用EF的数据库初始化策略,这时我们可以在代码或配置文件中设置,如下:

Database.SetInitializer<EfDbContext>(null);

注:以代码方式禁用初始化策略,也学要在EF上下文派生类中的构造函数中定义

<appSettings>
  <add key="DatabaseInitializerForType _2_1Code.EfDbContext,_2_1Code" value="Disabled"/>
</appSettings>
目录
相关文章
|
存储 Ubuntu 网络协议
如何本地部署Nextcloud结合cpolar搭建专属私有云盘远程访问(内网穿透)
如何本地部署Nextcloud结合cpolar搭建专属私有云盘远程访问(内网穿透)
288 0
如何本地部署Nextcloud结合cpolar搭建专属私有云盘远程访问(内网穿透)
|
JavaScript
uniapp+vue3路由跳转传参
uniapp+vue3路由跳转传参
562 0
|
Python
BUUCTF [BJDCTF2020]一叶障目 1
BUUCTF [BJDCTF2020]一叶障目 1
328 0
|
11月前
|
前端开发 JavaScript API
探索React Hooks:前端开发的革命性工具
【10月更文挑战第5天】探索React Hooks:前端开发的革命性工具
|
敏捷开发 JavaScript 测试技术
阿里云云效产品使用合集之Packages制品仓库支持哪些
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
9月前
|
安全 测试技术 网络安全
无需域名,如何通过IP地址申请SSL证书保障网站安全
SSL证书不仅适用于域名,还可为IP地址申请,确保无域名或局域网内数据传输安全。本文详解如何为IP地址申请SSL证书:选择支持的CA机构(如JoySSL),完成注册、验证并安装证书。特别适合没有域名、开发测试环境及局域网应用等场景。虽价格较高且供应商较少,但在特定需求下是有效解决方案。
|
10月前
|
负载均衡 监控 网络协议
OSPF中的度量值(Metric)设置:原理与应用
OSPF中的度量值(Metric)设置:原理与应用
1097 2
|
开发框架 JSON .NET
|
关系型数据库 MySQL 数据库
OceanBase 数据库,确实支持三种常见的 MySQL 隔离级别
OceanBase 数据库,确实支持三种常见的 MySQL 隔离级别
1072 1
|
NoSQL 关系型数据库 MySQL
Docker基础篇
🍅程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅Docker博客参考资料:Docker官网,中文网,编程不良人等
347 0
Docker基础篇