我的基页包含 Field1 和 SomeBlock
public abstract class BasePage : PageData
{
[CultureSpecific]
[Display(Name = "Field1")]
public virtual string Field1 { get; set; }
[Display(Name = "SomeBlock")]
public virtual SomeBlock SomeBlock { get; set; }
}
public class SomeBlock : BlockData
{
[CultureSpecific]
[Display(Name = "Field1")]
public virtual string Field1 { get; set; }
}
现在我必须将 Field1 移动到 BasePage 中的 SomeBlock ,并将所有现有数据从BasePage.Field1
移至{{ 1}}
出于这个目的,我创建了一个看起来像这样的工作:
BasePage.SomeBlock.Field1
如果我有大约1000页,那么一切正常。但是,如果网站有> 20000,那么工作就好了。
答案 0 :(得分:2)
存在问题
var descendents = repo.GetDescendents(_root)
.Where(p => SafeGetContent(repo, p) is BasePage).Select(repo.Get<BasePage>);
它不适用于大量页面。这种代码更适合这个问题:
var references = DataFactory.Instance.GetDescendents(RootPageReference);
var pages = DataFactory.Instance.GetItems(references,
LanguageSelector.AutoDetect()).Where(x => !x.IsDeleted).OfType<BasePage>();
答案 1 :(得分:1)
看起来你正在使用GetSafeContent为每个页面执行两次Get to the database,然后在此之后获取。你可以先做一个Get,然后再检查一下正确的类型。