架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 16865|回复: 1

[资料] EF 6 Code-First中的数据库初始化策略

[复制链接]
发表于 2019-4-17 15:56:46 | 显示全部楼层 |阅读模式
您在第一次运行Code-First应用程序后已经创建了一个数据库,但第二次开始后又是什么?每次运行应用程序时都会创建一个新数据库吗?生产环境怎么样?更改域模型时如何更改数据库?要处理这些方案,您必须使用其中一个数据库初始化策略。

有四种不同的数据库初始化策略:

  • CreateDatabaseIfNotExists:这是默认的初始化程序。顾名思义,如果根据配置不存在,它将创建数据库。但是,如果更改模型类,然后使用此初始化程序运行应用程序,则会引发异常。
  • DropCreateDatabaseIfModelChanges:如果您的模型类(实体类)已更改,则此初始化程序将删除现有数据库并创建新数据库。因此,当模型类发生更改时,您不必担心维护数据库模式。
  • DropCreateDatabaseAlways:顾名思义,无论您的模型类是否已更改,此初始化程序每次运行应用程序时都会删除现有数据库。当您每次运行应用程序时都需要一个新数据库时,这将非常有用,例如在开发应用程序时。
  • 自定义数据库初始化程序:您还可以创建自己的自定义初始化程序,如果上述内容不满足您的要求,或者您希望使用上述初始化程序执行其他初始化数据库的过程。

要使用上述DB初始化策略之一,必须使用Database上下文类中的类设置DB Initializer ,如下所示:




您还可以通过继承其中一个初始化程序来创建自定义数据库初始化程序,如下所示:




在上面的示例中,SchoolDBInitializer是从中派生的自定义初始值设定项类CreateDatabaseIfNotExists。这将数据库初始化代码与上下文类分开。

在配置文件中设置DB Initializer

您还可以在配置文件中设置db初始化程序。例如,要在app.config中设置默认初始值设定项:




您可以设置自定义数据库初始化程序,如下所示:




关闭DB Initializer

您可以为应用程序关闭数据库初始化程序。假设您不想丢失生产环境中的现有数据,则可以关闭初始化程序,如下所示:



您还可以在配置文件中关闭初始化程序,例如:








上一篇:图解密码技术 第三版
下一篇:尚硅谷2018年4月就业班视频
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2021-2-7 15:08:59 | 显示全部楼层
让Entity Framework启动不再效验__MigrationHistory表
https://www.itsvse.com/thread-3255-1-1.html

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-19 02:16

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表