Sitecore玻璃映射器类自动生成和设置[SitecoreType()]

Sitecore玻璃映射器类自动生成和设置[SitecoreType()],sitecore,sitecore7,sitecore7.2,glass-mapper,sitecore-mvc,Sitecore,Sitecore7,Sitecore7.2,Glass Mapper,Sitecore Mvc,我正在使用Glass Mapper V4和Sitecore 7.2,它们与TDS绑定在一起。TDS用于自动生成我所有的玻璃贴图器模型。我还创建了许多分部类来扩展TDS生成的Glass Mapper类。到目前为止还不错 我在网站上有一个web表单,我想利用Glass Mapper缓存。这里我们可以看到TDS产生了什么: [SitecoreType(TemplateId=ISenior_Surf_Day_Survey_PageConstants.TemplateIdString)] //,

我正在使用Glass Mapper V4和Sitecore 7.2,它们与TDS绑定在一起。TDS用于自动生成我所有的玻璃贴图器模型。我还创建了许多分部类来扩展TDS生成的Glass Mapper类。到目前为止还不错

我在网站上有一个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类手动编辑TDS代码生成的文件,因此我尝试将可缓存属性添加到手动扩展的分部类中

    [SitecoreType(Cachable = true)]
public partial class Senior_Surf_Day_Survey_Page
{
但是,这会产生编译错误:
错误CS0579重复“SitecoreType”属性

我的问题是,如何使用代码生成的模型添加可缓存属性?

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

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

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

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

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

[SitecoreType(Cacheable=true)]
[SitecoreType]

您不能只更改用于生成模型代码的T4模板吗?您可以让T4模板为特定模板设置可缓存值吗?我不一定要在生成的所有类上都设置此设置。据我所知,是否有其他方法可以实现此目的。例如,我可以使用Fluent添加m吗将属性应用于正在生成代码的特定模型类?是的,我相信这是可能的。您可以查看官方教程,了解如何在此处配置SitecoreType属性上的每个属性:但是,如果计划在同一解决方案中使用这两种方法,您可能需要小心。W虽然我实际上还没有尝试过,但我相信您可以在glassmappercustom.GlassLoaders中指定这两种类型的配置,但根据加载程序的顺序,其中一种可能会覆盖另一种。