2

我需要能够执行包管理器控制台为代码优先数据库迁移执行的所有可用功能。有谁知道我如何严格通过用户定义的代码来完成这些命令?我正在尝试自动化整个迁移过程,我的团队遇到了由于该项目的开发人员数量众多而导致迁移不同步的可怕问题。我想编写一个开发人员可以与之交互的项目,该项目将创建并在需要时自动为他们重新构建迁移。

4

2 回答 2

1

PM 正在通过 PowerShell 和 PS cmdlet 调用(例如用于活动目录等)
http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference

包管理器控制台是 Visual Studio 中的 PowerShell 控制台

......关于这个的信息基本上很少- 我之前已经尝试过几次,如果你真的需要它,它会开始做一些“肮脏的工作”(不太确定,它可能不是那么困难 - 提供你有一些PS经验)

以下是类似的问题/答案- 制定 PS comdlet 非常复杂 - 在这种情况下,它涉及一些额外的步骤。而且 PS 往往非常依赖于版本 - 所以你需要检查你正在使用的特定 EF/CF。

从我的代码运行 entityframework cmdlet

可以使用 EF DbMigrator 添加迁移

您可能想查看EF的源代码Add-Migration
更正:这是官方存储库的链接 - 感谢@Brice)  

http://entityframework.codeplex.com/SourceControl/changeset/view/f986cb32d0a3#src/EntityFramework.PowerShell/Migrations/AddMigrationCommand.cs

http://entityframework.codeplex.com/SourceControl/BrowseLatest

(PM 错误还表明执行 Add-Migrations 的代码的起源是“System.Data.Entity.Migrations.Design.ToolingFacade”)

如果你需要“只是”一个Update- 你可以尝试使用DbMigrator.Update(这个人试了一下http://joshmouch.wordpress.com/2012/04/22/entity-framework-code-first-migrations-executing-migrations- using-code-not-powershell-commands/)-但我不确定这对您有多重要,我对此表示怀疑。
脚手架是真正的问题(添加迁移),据我所知,无法通过 EF/CF 框架直接从 C# 访问。


注意:-基于(http://entityframework.codeplex.com/SourceControl/changeset/view/f986cb32d0a3#src/EntityFramework.PowerShell/Migrations/AddMigrationCommand.cs)中的代码-正如EF大师自己所说-那部分的代码调用到System.Data.Entity.Migrations.Design库中——它完成了大部分工作。如果可以引用那个并实际重复AddMigrationCommand正在做的事情 - 那么可能根本不需要 PowerShell。但我怀疑这不是那么直截了当,外部呼叫者等可能看不到“内部”呼叫。

于 2013-03-25T18:08:01.493 回答
0

至少在这篇文章中,您可以直接访问System.Data.Entity.Migrations.Design.MigrationScaffolder该类并直接调用其Scaffold()上的方法,这将返回一个包含“常规”.cs 文件、“Designer.cs”文件和 .cs 文件内容的对象。 resx 文件。

您如何处理这些文件取决于您!

就个人而言,我正试图将其转变为能够在新的 ASPNET5/DNX 项目上创建 EF6 迁移的工具,该项目不受 powershell 命令的支持。

于 2015-03-27T00:29:59.683 回答