默认情况下,Get-Migrations命令在Visual Studio包管理器控制台中运行时,将按降序返回已应用于目标数据库的Entity Framework迁移列表。也就是说,列表被排序为首先进行最近的迁移。
有没有办法让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
答案 0 :(得分:1)
根据提供的示例输出,命令似乎返回文本。
关于换行符的split
,以及_
上的2个属性分开,以后能够对事物进行排序:
#$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