使用玻璃映射器对后代类型使用流畅映射
Using fluent mapping on descendant types with glass mapper
我有一个正在映射的类型 (FooterFolder
),它有一个 属性 的 SocialMedia
,我想使用它自己的流畅配置来映射它。
这里是页脚的配置
loader.Add<FooterFolder>()
.TemplateId("3E1C2A35-C62C-4FCE-B576-787F23E7728D")
.AutoMap()
.Fields(config =>
{
config.Field(x => x.LogoLink)
.FieldName("Logo Link");
})
.Query(x => x.SocialLinks).IsRelative().InferType().Query("./Social Links/*");
和社交媒体
loader.Add<SocialMedia>()
.TemplateId("1A1D6464-CB5A-433F-B7A9-9D10FA8E4BFE")
.AutoMap()
.Field(x => x.LinkLink).FieldName("Link");
如果我将 SocialMedia 上的字段名称更改为 Link,它会起作用(大概使用自动映射)但我想控制映射以防名称不正确完全匹配。我有办法做到这一点吗?
这是我的 FooterFolder
辩护词:
public class FooterFolder : FolderBase
{
public virtual string Copyright { get; set; }
public virtual Image Logo { get; set; }
public virtual Link LogoLink { get; set; }
public virtual IEnumerable<SocialMedia> SocialLinks { get; set; }
}
和SocialMedia
:
public class SocialMedia : ContentBase
{
public virtual Image Icon { get; set; }
public virtual Link LinkLink { get; set; }
public virtual string Shorthand { get; set; }
}
(我将 属性 LinkLink
命名只是为了测试映射。通常它们只会在 LogoLink
之类的地方有所不同,其中 space在 Sitecore 定义中)
在 sitecore 中,Social Media
有一个名为 Link
的 General Link
。如果我将 SocialMedia
上的 属性 的名称更改为 Link
,它可以正常工作,大概是通过自动映射。
我最终切换到使用 SitecoreGlassMap
版本的配置,而不是 IConfigurationLoader
版本,并且工作正常。
我有一个正在映射的类型 (FooterFolder
),它有一个 属性 的 SocialMedia
,我想使用它自己的流畅配置来映射它。
这里是页脚的配置
loader.Add<FooterFolder>()
.TemplateId("3E1C2A35-C62C-4FCE-B576-787F23E7728D")
.AutoMap()
.Fields(config =>
{
config.Field(x => x.LogoLink)
.FieldName("Logo Link");
})
.Query(x => x.SocialLinks).IsRelative().InferType().Query("./Social Links/*");
和社交媒体
loader.Add<SocialMedia>()
.TemplateId("1A1D6464-CB5A-433F-B7A9-9D10FA8E4BFE")
.AutoMap()
.Field(x => x.LinkLink).FieldName("Link");
如果我将 SocialMedia 上的字段名称更改为 Link,它会起作用(大概使用自动映射)但我想控制映射以防名称不正确完全匹配。我有办法做到这一点吗?
这是我的 FooterFolder
辩护词:
public class FooterFolder : FolderBase
{
public virtual string Copyright { get; set; }
public virtual Image Logo { get; set; }
public virtual Link LogoLink { get; set; }
public virtual IEnumerable<SocialMedia> SocialLinks { get; set; }
}
和SocialMedia
:
public class SocialMedia : ContentBase
{
public virtual Image Icon { get; set; }
public virtual Link LinkLink { get; set; }
public virtual string Shorthand { get; set; }
}
(我将 属性 LinkLink
命名只是为了测试映射。通常它们只会在 LogoLink
之类的地方有所不同,其中 space在 Sitecore 定义中)
在 sitecore 中,Social Media
有一个名为 Link
的 General Link
。如果我将 SocialMedia
上的 属性 的名称更改为 Link
,它可以正常工作,大概是通过自动映射。
我最终切换到使用 SitecoreGlassMap
版本的配置,而不是 IConfigurationLoader
版本,并且工作正常。