我需要一些关于raven db及其c#api的帮助。 我想用LINQ查询(带LINQ到Raven实现)进行“顺序”。为此,我必须创建一个索引来实现此操作。我的架构目前正常化,但我想使其失模才能在其中添加自定义属性。

所以,我有:

实体答:

  • 一些属性
  • B实体的ID

    事实上,我只是想按照B财产订购我的。所以我想使我的A表示为包括B财产。 因此,可以使用RavendB进行方案演变,但是为了在转换A时将B的B属性设置在我必须加载B.并且根据文档似乎不可能。

    我不想建立一个令人毛骨悚然的程序,它会在每个a上迭代以加载bs,但我没有看到另一个解决方案。

    任何想法?

    谢谢你的时间:)。 朱利安

有帮助吗?

解决方案

您不应该编写一个令人毛骨悚然的程序,而是一个强大的迁移项目,它将持有一堆有用的迁移脚本。像波纹管道这样的简单脚本将为您提供工作:

public void LoadAndSaveWithDenormalizedProperty()
{
    using (var session = store.OpenSession())
    {
        int skip = 0;
        const int take = 24;
        while (true)
        {
            var items = session.Query<ItemA>()
                .Customize(customization => customization.Include(x => x.ItemBId))
                .Skip(skip)
                .Take(take)
                .ToList();
            skip += items.Count;

            foreach (item in items)
            {
                item.DenormalizedProperty = 
                       session.Load<ItemB>(item.ItemBId).PropertyToDenormalize;
            }

            session.SaveChanges();

            if (items.Count == 0)
                break;
        }
    }
}
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top