2016-01-22 42 views
0

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

这里的问题似乎是模块的状态,它在表Orchard_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,也没有工作。

这是预期行为还是代码中可能出现错误?

+0

模块不应该混乱与另一个,在我看来,像启用一个模块应该是网站管理员的决定。有什么理由证明这一点? –

+0

@BertrandLeRoy在点之后,有一行代码将分类标记字段添加到零件中,并且当分类标记功能未启用时零件编辑器不显示任何内容。因此,我认为启用该功能将是一个好主意,因为该部分已链接到一个功能,该功能本身已标记为Module.txt中的Orchard.Taxonomies的依赖项。 – ViRuSTriNiTy

+1

如果您的功能对分类法有依赖性,启用它也将启用分类法。你不需要做其他事情。也就是说,除非依赖关系是新版本中添加的新东西。在这种情况下,我可能会显示一个警告,要求用户启用它,并且我会让代码具有适应性,不会启用分类法(无论如何,这是一个好主意)。 –

回答

2

如果您的功能对分类标准有依赖性,启用它也将启用分类标准。你不需要做其他事情。也就是说,除非依赖关系是新版本中添加的新东西。在这种情况下,我可能会显示一条警告,要求用户启用它,并且我会让代码具有适应性,以便不会启用分类法(无论如何,这是个好主意)