gpt4 book ai didi

entity-framework - 将 EF Add-Migration 脚本编写到自动构建任务中

转载 作者:行者123 更新时间:2023-12-04 07:21:28 25 4
gpt4 key购买 nike

我将所有 ef 代码首先迁移到一个名为 Migrations 的单独程序集中。

在包管理器控制台中,我输入 Add-Migration xyz这支撑了迁移

是否可以从 Visual Studio 外部执行此操作?我正在使用 rake 脚本为我的构建进行大量自动化,但这是我还没有完全掌握的部分。这里的目标是执行以下操作
rake db:add_migration "xyz"
这将运行一些命令并将迁移添加到指定的项目。这是我唯一无法弄清楚如何自动化的地方!我可能会构建其他任务,例如删除和创建数据库以及将迁移导出到脚本,以便它可以在我的回旋迁移下运行。

相关资料

Add-Migration [-Name] <String> [-Force]
[-ProjectName <String>] [-StartUpProjectName <String>]
[-ConfigurationTypeName <String>] [-ConnectionStringName <String>]
[-IgnoreChanges] [<CommonParameters>]

Command Reference

我可以看到 EF 已从 nuget 安装到 packages 文件夹
packages\EntityFramework.5.0.0\tools

我可以在文件中看到 EntityFramework.psm1
function Add-Migration
{
[CmdletBinding(DefaultParameterSetName = 'ConnectionStringName')]
param (
[parameter(Position = 0,
....
}

但我不确定如何从命令行执行它。我试过了
..\packages\EntityFramework.5.0.0\tools>powershell EntityFramework.psm1 Add-Migration

但这会导致错误
The term 'EntityFramework.psm1' is not recognized as the name of a cmdlet, 
function, script file, or operable program. Check the spelling of the name,
or if a path was included, verify that the path is correct and try again.
At line:1 char:21
+ EntityFramework.psm1 <<<< Add-Migration
+ CategoryInfo : ObjectNotFound: (EntityFramework.psm1:String) [],
CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

最佳答案

查看 EntityFramework.psm1它只是 EntityFramework.PowerShell.dll 的脚本外观。实际的添加迁移功能在 System.Data.Entity.Migrations.AddMigrationCommand 中实现。在那个程序集中上课。
查看源代码,它通过以下行获取当前事件的项目(我假设这是在 powershell 控制台中选择的项目):

get { return (Project)_domain.GetData("project"); }
ProjectEnvDTE.Project这(如果我正确地用谷歌搜索的话)是一种与 IDE 交互的方式。一些进一步的源代码阅读表明,文件是通过与 IDE 接口(interface)添加到项目中的。
在我看来,脚手架代码与 Visual Studio 的集成度太高,无法作为命令行构建的一部分在 Visual Studio 之外运行。
编辑
我回到这个问题上并发现它可能是可能的。还有另一个 SO question 描述了如何在 Visual Studio 之外使用 EnvDTE,例如从命令行应用程序:
Open DTE solution from another program (not add-in)
因此,确实可以在 EntityFramework.PowerShell.dll 周围编写一个自己的 .exe 包装器。如果在调用 AddMigrationCommand 之前应用程序域已准备好正确的 EnvDTE 对象类(class)。为此,您必须分析 Entity Framework 源代码,以了解如何欺骗脚手架代码以相信它在 Visual Studio 内部运行。
所以,最后:这可能是可能的——但为它编写自己的工具将是一个不平凡的项目。

关于entity-framework - 将 EF Add-Migration 脚本编写到自动构建任务中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17093288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com