繁体   English   中英

使用代码优先迁移创建数据库:db.Initialize(…)和db.Create()之间的操作顺序是什么?

[英]Create a database using code-first migrations: What is the order of operations between db.Initialize(…) and db.Create()?

假设我有对System.Data.Entity.Database的引用,例如

Database db = context.Database;

我想

  • 从头开始创建数据库(如果不存在)
  • 如果确实存在,请对其进行更新(与迁移脚本同步)

直接从C#平台(不是Package Manager控制台)访问。

我有

 if(!db.Exists())
 {
    db.Create();
 }

首先。 但是我不确定何时/是否需要使用db.Initialize 这与db.Create有何不同? 有人可以解释吗?

此外,当我查看文档时会说有关Create

请注意,在数据库初始化策略运行之前调用此方法将禁用该策略的执行。

这意味着什么?

有四种不同的数据库初始化策略:( http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx

  • CreateDatabaseIfNotExists
  • DropCreateDatabaseIfModelChanges
  • DropCreateDatabaseAlways
  • Custom DB Initializer

您可以通过以下方式设置策略:

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

此策略在您第一次触发任何sql命令到您的数据库或在调用Initialize方法期间自动运行。 因此,您无需调用它,无论如何它将被调用。

但是,如果调用Create方法,则意味着您只想创建新的数据库而忽略初始化策略。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM