大量页面的数据迁移

时间:2016-04-18 11:39:58

标签: c# episerver

我的基页包含 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,那么工作就好了。

2 个答案:

答案 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,然后再检查一下正确的类型。

相关问题