Sitecore Glass Mapper class 自动生成和设置 [SitecoreType()]

Sitecore Glass Mapper class auto generation and setting [SitecoreType()]

我将 Glass Mapper V4 与与 TDS 绑定的 Sitecore 7.2 一起使用。 TDS 用于自动生成我所有的 Glass Mapper 模型。我还创建了一些部分 classes 来扩展 TDS 生成的 Glass Mapper classes。到目前为止一切顺利。

我在网站上有一个 Web 表单,我想利用 Glass Mapper 缓存。在这里我们可以看到 TDS 生成了什么:

    [SitecoreType(TemplateId=ISenior_Surf_Day_Survey_PageConstants.TemplateIdString)] //, Cachable = true
public partial class Senior_Surf_Day_Survey_Page  : GlassBase, ISenior_Surf_Day_Survey_Page 
{

可以看到 //, Cachable = true 被代码生成注释掉了

由于我无法使用所有 Glass Mapper classes 手动编辑我的 TDS 代码生成的文件,我尝试将可缓存属性添加到我的手动扩展部分 class。

    [SitecoreType(Cachable = true)]
public partial class Senior_Surf_Day_Survey_Page
{

但是,这会产生编译错误:
错误 CS0579 重复 'SitecoreType' 属性

我的问题是,我怎样才能为代码生成的模型添加可缓存属性?

您可以使用 TDS 项目属性选项卡上的“自定义数据”字段来指定在启用缓存的情况下生成特定的 class。

自定义数据字段的格式类似于查询字符串,因此您可以向其中添加类似 'cacheable=true' 的内容(如果您有多个 key/value 对,则以 & 符号分隔)。

为了让它与代码生成一起工作,您需要在生成期间专门查找该自定义数据键,然后应用适当的属性重载 [SitecoreType(Cachable = true)]。

如果您使用的是 TDS 提供的示例 .tt 文件,那么您应该已经定义了一个名为 'GetCustomProperty' 的辅助函数。您可以像这样在 item.tt 文件中使用此函数来生成适当的 SitecoreType 属性:

<# if (GetCustomProperty(template.Data, "cacheable") == "true") { #>
    [SitecoreType(Cacheable = true)]
<# } else { #>
    [SitecoreType]
<# } #>