如何在果园迁移中启用模块



我想在迁移中启用特定模块,但该模块未立即启用。

这里的问题似乎是模块的状态,它被设置为在表 Orchard_Settings_ShellFeatureStateRecordRising。在这种情况下,我无法再在 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"});

最新更新