2016-01-22 6 views
0

Я хочу включить определенный модуль в перенос, но модуль не включен сразу.Как включить модуль в миграции Orchard?

Проблема здесь выглядит как состояние модуля, она установлена ​​в Rising в таблице Orchard_Settings_ShellFeatureStateRecord. В этом случае я больше не могу активировать модуль вручную в Admin, мне нужно перезапустить веб-сервер после выполнения миграции, чтобы модуль смог указать 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 После точек есть строка кода, которая добавляет поле таксономии к части, и когда функция таксономии не включена, ничего не отображается редактором части. Поэтому я подумал, что включение функции будет хорошей идеей, поскольку часть связана с функцией, которая сама по себе отмечена зависимостью от Orchard.Taxonomies в Module.txt. – ViRuSTriNiTy

+1

Если у вашей функции есть зависимость от таксономий, ее включение также позволит использовать таксономии. Вам не нужно ничего делать. То есть, если зависимость не является чем-то новым, что вы добавляете с новой версией. В этом случае я, вероятно, выведет предупреждение с просьбой включить его, и я сделаю код устойчивым к тому, чтобы таксономии не были включены (что является хорошей идеей, несмотря ни на что). –

ответ

2

Если ваша функция имеет зависимость от таксономий, ее включение также позволит использовать таксономии. Вам не нужно ничего делать. То есть, если зависимость не является чем-то новым, что вы добавляете с новой версией. В этом случае я, вероятно, выведет предупреждение с просьбой включить его, и я сделаю код устойчивым к тому, чтобы таксономии не были включены (что является хорошей идеей, несмотря ни на что)