Автоматическое журналирование запросов DataMapper

Вы имеете в виду индексы на столбцах?

можно сделать это вручную в Вашем ClassMap<...> файлы путем добавления .SetAttribute("index", "nameOfMyIndex"), например, как так:

Map(c => c.FirstName).SetAttribute("index", "idx__firstname");

или можно сделать это при помощи функций атрибута автокартопостроителя - например, как так:

создав Вашу модель персистентности:

{
    var model = new AutoPersistenceModel
    {
        (...)
    }

    model.Conventions.ForAttribute<IndexedAttribute>(ApplyIndex);
}


void ApplyIndex(IndexedAttribute attr, IProperty info)
{
    info.SetAttribute("index", "idx__" + info.Property.Name");
}

и затем делают это к Вашим объектам:

[Indexed]
public virtual string FirstName { get; set; }

мне нравится последний. Хороший компромисс между тем, чтобы не быть non-instrusive к Вашей модели предметной области, и все же будучи очень эффективным и ясным на том, что происходит.

17
задан kEND 24 October 2009 в 20:38
поделиться

1 ответ

Похоже, я пропустил вполне разумный шаг. Вам необходимо разместить DataMapper :: Logger.new (STDOUT,: debug) , прежде чем устанавливать соединение. HT к @snusnu в #datamapper IRC.

37
ответ дан 30 November 2019 в 11:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: