【问题标题】:Sort output of Get-Migrations ascending?对 Get-Migrations 的输出进行升序排序?
【发布时间】:2017-09-10 20:13:46
【问题描述】:

默认情况下,Get-Migrations 命令在 Visual Studio 包管理器控制台中运行时,会按降序返回已应用于目标数据库的实体框架迁移列表。也就是说,列表按最近的迁移排序。

有没有办法让 Get-Migrations 以升序返回迁移列表,也就是说,最旧的迁移优先?

到目前为止我已经尝试过:

  • 将输出通过管道传输到 Sort-Object cmdlet,例如Get-Migrations [my params] | Sort-Object -Property Name(我不确定要指定什么属性名称,或者这是否适用?)。所有这些尝试都以静默方式失败(没有显示错误消息,Get-Migrations 输出没有变化)。

  • 查看了 Get-Migrations (Get-Help Get-Migrations) 的 Powershell 帮助并搜索了 Web 以查看 Get-Migrations 本身是否具有控制输出排序顺序的参数。找不到。

我目前得到的 Get-Migrations 命令的输出:

PM> Get-Migrations [my arguments...]
Retrieving migrations that have been applied to the target database.
201704121534436_SomeMigration999
201703291334212_SomeMigration998
[lots and lots more records here that are a pain to scroll through...]
201410110448547_InitializeTables
201410110018266_InitialCreate

【问题讨论】:

  • 嗨,你能提供一些你得到的未排序输出的样本吗?
  • @sodawillow 好问题,完成!
  • 这个cmdlet是微软提供的吗?
  • @sodawillow 是的。虽然我不是微软 100% 的确切来源,但我怀疑它是作为实体框架的一部分提供的:msdn.com/data/ef
  • @sodawillow 有很多活动部件需要设置才能进行复制,所以我不会要求你尝试——这个问题更方便/“应该很容易”无论如何,没有什么关键任务。无论如何,我非常感谢您的所有帮助! :-)

标签: visual-studio entity-framework powershell entity-framework-6


【解决方案1】:

根据提供的示例输出,该命令似乎返回文本。

我会在换行符上使用split,然后在_ 上将这两个属性分开,之后能够对事物进行排序:

#$migrations = Get-Migrations "..."

#test values
$migrations = "201704121534436_SomeMigration999
201703291334212_SomeMigration998
201410110448547_InitializeTables
201410110018266_InitialCreate"

$migrations.Split("`n") | ForEach-Object {
    New-Object -TypeName psobject -Property @{
        Date = $_.Split("_")[0]
        Name = $_.Split("_")[1]
    }
} | Sort-Object Name

【讨论】:

  • 我喜欢这个主意!但是,由于我在包管理器控制台中,因此我认为我需要以单行方式执行此操作。对于初学者,我尝试了以下方法,但收到“您不能在空值表达式上调用方法”错误:(Get-Migrations [params]).Split("`n")
  • Get-Migrations 的输出在错误发生之前打印。我想知道 Get-Migrations cmdlet 是否在运行时打印其输出,而不是将输出作为字符串返回。我可能不走运?
  • 如果命令的输出不能被“捕获”,我不知道如何继续。也许有一个参数来指定一个输出文件?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-30
  • 2019-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多