如何在 Orchard 迁移中启用模块?
How to enable module in Orchard migration?
我想在迁移中启用特定模块,但该模块没有立即启用。
这里的问题好像是模块的状态,在tableOrchard_Settings_ShellFeatureStateRecord
中设置为Rising
。在这种情况下,我无法再在 Admin 中手动启用该模块,我需要在执行迁移后重新启动 Web 服务器以使模块状态为 Up
。
迁移代码看起来像
public class Migration: Orchard.Data.Migration.DataMigrationImpl
{
// public
public Migration(Orchard.Environment.Features.IFeatureManager aFeatureManager)
{
mFeatureManager = aFeatureManager;
}
...
public int UpdateFrom1()
{
System.Collections.Generic.Dictionary<string, Orchard.Environment.Extensions.Models.FeatureDescriptor> lFeatures =
mFeatureManager.GetAvailableFeatures().ToDictionary(m => m.Id, m => m);
if (lFeatures.ContainsKey("Orchard.Taxonomies"))
mFeatureManager.EnableFeatures(new string[] {"Orchard.Taxonomies"}, true);
...
}
// private
private readonly Orchard.Environment.Features.IFeatureManager mFeatureManager;
}
我也试过用IModuleManager
,没用。然后我尝试启用另一个简单的功能,如 Orchard.Alias.UI
,也没有用。
这是预期的行为还是代码中可能有什么错误?
如果您的功能依赖于分类法,则启用它也会启用分类法。您无需执行任何其他操作。也就是说,除非依赖项是您在新版本中添加的新内容。在那种情况下,我可能会显示一条警告,要求用户启用它,并且我会让代码对未启用的分类法具有弹性(无论如何这都是个好主意)
更改此行:
mFeatureManager.EnableFeatures(new string[] {"Orchard.Taxonomies"},true);
给这个:
mFeatureManager.EnableFeatures(new string[] {"Orchard.Taxonomies"});
我想在迁移中启用特定模块,但该模块没有立即启用。
这里的问题好像是模块的状态,在tableOrchard_Settings_ShellFeatureStateRecord
中设置为Rising
。在这种情况下,我无法再在 Admin 中手动启用该模块,我需要在执行迁移后重新启动 Web 服务器以使模块状态为 Up
。
迁移代码看起来像
public class Migration: Orchard.Data.Migration.DataMigrationImpl
{
// public
public Migration(Orchard.Environment.Features.IFeatureManager aFeatureManager)
{
mFeatureManager = aFeatureManager;
}
...
public int UpdateFrom1()
{
System.Collections.Generic.Dictionary<string, Orchard.Environment.Extensions.Models.FeatureDescriptor> lFeatures =
mFeatureManager.GetAvailableFeatures().ToDictionary(m => m.Id, m => m);
if (lFeatures.ContainsKey("Orchard.Taxonomies"))
mFeatureManager.EnableFeatures(new string[] {"Orchard.Taxonomies"}, true);
...
}
// private
private readonly Orchard.Environment.Features.IFeatureManager mFeatureManager;
}
我也试过用IModuleManager
,没用。然后我尝试启用另一个简单的功能,如 Orchard.Alias.UI
,也没有用。
这是预期的行为还是代码中可能有什么错误?
如果您的功能依赖于分类法,则启用它也会启用分类法。您无需执行任何其他操作。也就是说,除非依赖项是您在新版本中添加的新内容。在那种情况下,我可能会显示一条警告,要求用户启用它,并且我会让代码对未启用的分类法具有弹性(无论如何这都是个好主意)
更改此行:
mFeatureManager.EnableFeatures(new string[] {"Orchard.Taxonomies"},true);
给这个:
mFeatureManager.EnableFeatures(new string[] {"Orchard.Taxonomies"});