Можно ли автоматически генерировать шаблоны Sitecore только для моделей кодирования? Я использую Sitecore 8.0 и видел подход Glass Mapper Code First, но не могу найти больше информации об этом.
Sitecore: первый код Glass Mapper
Ответы (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);
}
}
}
Кроме того, я бы посоветовал сначала использовать код только для разработки. Вы можете создавать пакеты или сериализовать шаблоны, как обычно, и развертывать их в другой среде, поэтому вам не нужен там поставщик данных (и потенциальные риски).
Ты сможешь. Но это не будет связано со стеклом.
Code first — это именно то, чего хочет достичь Sitecore.PathFinder. Однако в открытом доступе об этом пока не так много информации.
Начните здесь: https://github.com/JakobChristensen/Sitecore.Pathfinder