在Glass Mapper SC 4.0.2.10中记录/调试映射错误

时间:2015-10-26 15:08:53

标签: sitecore sitecore8 glass-mapper

是否有人知道强制Glass Mapper SC为映射错误抛出异常的方法?它似乎吞下它们,我留下了null属性,没有简单的方法来诊断问题。这些教程并没有真正深入研究属性配置,所以我不得不做很多TIAS,这会减慢开发速度。

我也会满足于其他用户发现有助于诊断映射问题的任何方法。

示例 这是我正在检索并尝试映射的项目的模板:

UnitPlantRawOrigin Template

以下是我通过查询返回的项目之一:

Item with Sample Data

以下是与模板匹配的模型:

[SitecoreType(AutoMap = true)]
public class UnitDetails 
{
    //[SitecoreField("ID"), SitecoreId]
    public virtual Guid ID { get; set; }

    [SitecoreField("Pre-Recycled Percentage")]
    public virtual decimal PreConsumerRecycledPercentage { get; set; }

    [SitecoreField("Post-Recycled Percentage")]
    public virtual decimal PostConsumerRecycledPercentage { get; set; }

    public virtual Plant Plant { get; set; }

    [SitecoreField("Raw Material")]
    public virtual RawMaterial RawMaterial { get; set; }

    [SitecoreField("Raw Material Origin")]
    public virtual RawMaterialOrigin RawMaterialOrigin { get; set; }
}

即使您暂时忘记了RawMaterial和RawMaterialOrigin属性(那些也没有映射),小数属性也不会映射。此外,ID属性将始终为null,除非我确切地命名(ID)。我认为[SitecoreField(“ID”),SitecoreId]装饰器应该提供给Glass的提示。以下是映射数据的示例。没有例外:

Debug Screenshot - Unmapped Properties

1 个答案:

答案 0 :(得分:0)

我知道这是旧线程,可能已经解决了,但是由于设法再次解决此问题(上次忘记更新:D),所以想到了这次录制。

我正在升级到Glass Mapper的v5。我遵循基于属性的默认配置。它已记录在here中,但最重要的是,我添加了

1)类模板

[SitecoreType(AutoMap = true, TemplateId = "<Branch Id>"]

2)ID字段应在代码中声明为以下内容。

[SitecoreId]
public virtual Guid Id { get; set; }

3)如文章所述,使用Sitecore Service(MVC / WebForm)更改Sitecore服务,在所有位置将延迟加载传递为false,并推断类型为true。这是非常重要的一步。

我希望这对我下次访问此问题会有所帮助。 :D