Sitecore: первый код Glass Mapper

Можно ли автоматически генерировать шаблоны Sitecore только для моделей кодирования? Я использую Sitecore 8.0 и видел подход Glass Mapper Code First, но не могу найти больше информации об этом.


person Makler    schedule 12.06.2016    source источник
comment
TDS может генерировать код для вас, модель. См. hedgehogdevelopment.github.io/tds/chapter6.html.   -  person Jan Bluemink    schedule 13.06.2016
comment
@JanBluemink Я почти уверен, что ОП хочет, чтобы все было наоборот. Он хочет сначала закодировать свою модель, а затем сгенерировать шаблоны Sitecore из классов моделей.   -  person Dmytro Shevchenko    schedule 13.06.2016
comment
Именно мне нужно сначала закодировать модель, а затем сгенерировать шаблоны Sitecore.   -  person Makler    schedule 13.06.2016
comment
У Sitecore Rocks была эта функция, но они заморозили ее в последних версиях... youtube.com/watch? v=amUIYY06J3Q   -  person Vlad Iobagiu    schedule 13.06.2016
comment
По какой причине вы хотите использовать код первого поколения шаблонов? Я считаю, что имеет смысл создавать свои шаблоны в Sitecore и позволить Glass mapper генерировать код для вас, используя генерацию кода TDS... Он автоматически устанавливает ваши типы полей и прочее. Возможно, есть другое решение вашей проблемы.   -  person Bas Wiebing    schedule 13.06.2016
comment
Да, я знаю, что генерация кода TDS — хорошее решение, но у меня была задача попробовать первый подход к коду с использованием Glass Mapper.   -  person Makler    schedule 13.06.2016


Ответы (2)


Не уверен, почему об этом мало информации, но вы определенно можете сначала смоделировать/кодировать!. Я делаю это часто, используя подход к настройке атрибутов, например:

[SitecoreType(true, "{generated guid}")]
public class ExampleModel 
{ 
    [SitecoreField("{generated guid}", SitecoreFieldType.SingleLineText)]
    public virtual string Title { get; set; }
}

Теперь, как это работает. Значение «истина» SitecoreType для первого параметра указывает, что его можно использовать для codefirst. Существует GlassCodeFirstDataprovider, у которого есть метод Initialize, выполняемый в конвейере Initialize Sitecore. Этот метод соберет все конфигурации, отмеченные для codefirst, и создаст их в поставщике данных sql. Разделы и поля сохраняются в памяти. Он также принимает во внимание наследование (базовые шаблоны).

Я думаю, вам сначала нужно раскомментировать некоторый код в классе GlassMapperScCustom, который вы получаете при установке проекта через Nuget. Метод PostLoad содержит несколько строк, которые выполняют метод Initialize каждого поставщика CodeFirstData.

var dbs = global::Sitecore.Configuration.Factory.GetDatabases();
foreach (var db in dbs)
{
    var provider = db.GetDataProviders().FirstOrDefault(x => x is GlassDataProvider) as GlassDataProvider;
    if (provider != null)
    {
        using (new SecurityDisabler())
        {
            provider.Initialise(db);
        }
    }
}

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

person RvanDalen    schedule 13.06.2016

Ты сможешь. Но это не будет связано со стеклом.

Code first — это именно то, чего хочет достичь Sitecore.PathFinder. Однако в открытом доступе об этом пока не так много информации.

Начните здесь: https://github.com/JakobChristensen/Sitecore.Pathfinder

person Mark Cassidy    schedule 13.06.2016