我正在尝试从Orchard 1.9.2升级到1.10.2。
我的日志中除了以下内容之外
2018-12-07 23:55:27,366 [29] Orchard.Alias.Implementation.Updater.AliasHolderUpdater-(空)- 别名刷新[http://localhost:30321/]期间发生异常 NHibernate.Exceptions.GenericADOException:无法执行查询[ 选择aliasrecor0_.Id作为Id19_,选择aliasrecor0_.Path作为Path19_, aliasrecor0_.RouteValues为RouteVal3_19_,aliasrecor0_.Source为 Source19_,aliasrecor0_.IsManaged as IsManaged19_, Orchard_Alias_AliasRecord中的aliasrecor0_.Action_id作为Action6_19_ aliasrecor0_,其中aliasrecor0_.Id> @ p0由aliasrecor0_.Id asc排序 名称:p1-值:0 [SQL:选择aliasrecor0_.Id作为Id19_, aliasrecor0_.Path作为Path19_,aliasrecor0_.RouteValues作为 RouteVal3_19_,aliasrecor0_.Source作为Source19_, aliasrecor0_.IsManaged为IsManaged19_,aliasrecor0_.Action_id为 来自Orchard_Alias_Alias的Action6_19_Recordaliasrecor0_其中 aliasrecor0_.Id> @ p0按aliasrecor0_.Id asc的顺序排序] ---> System.Data.SqlClient.SqlException:无效的列名称“ IsManaged”。 无法准备声明。 ... ... 在Orchard.Alias.Implementation.Updater.AliasHolderUpdater.Refresh()
好像已经检查了Orchard_Framework_DataMigrationRecord
表并且Orchard.Alias.Migrations
的版本为1
一样,迁移似乎没有进行
IsManaged
应该添加到Orchard.Alias模块的Migrations.cs的UpdateFrom1
中
public int UpdateFrom1() {
SchemaBuilder.AlterTable("AliasRecord",
table => table
.AddColumn<bool>("IsManaged", column => column.WithDefault(false))
);
return 2;
}
罪魁祸首似乎是DefaultOrchardShell.cs中的这一行
allRoutes.AddRange(_routeProviders.SelectMany(provider => provider.GetRoutes()));
看来,在这种例外情况之前,迁移永远都没有机会运行。
我该怎么办? 我可以手动添加IsManaged,希望这是唯一的问题,但这似乎有点黑。