Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 迁移存储在RavenDB中的数据_.net_Ravendb - Fatal编程技术网

.net 迁移存储在RavenDB中的数据

.net 迁移存储在RavenDB中的数据,.net,ravendb,.net,Ravendb,我在RavenDB(build#888)中存储了实体。由于数据库迁移,我需要更改他们的ID,连接到应用程序的较新版本 我已经编写了我正在使用的示例函数: public bool Migrate() { using (var session = _store.OpenSession()) { var users = session.Query<User>().ToList(); foreach (var user in users)

我在RavenDB(build#888)中存储了实体。由于数据库迁移,我需要更改他们的ID,连接到应用程序的较新版本

我已经编写了我正在使用的示例函数:

public bool Migrate()
{
    using (var session = _store.OpenSession())
    {
        var users = session.Query<User>().ToList();
        foreach (var user in users)
        {
            user.Id = user.Email;
        }
        session.SaveChanges();
     }
}

如何做到这一点?

我当前的解决方案是将当前实体复制到临时实体,更改所需的属性,将这些新实体存储在数据库中,最后删除旧实体:

using (var session = _store.OpenSession())
{
    var users = session.Query<User>().ToList();
    foreach (var user in users)
    {
        var newuser = new User
                          {
                              Id = user.Email,
                              DisplayName = user.DisplayName
                          };

        session.Store(newuser);
        session.Delete(user);
    }
    session.SaveChanges();
}
使用(var session=\u store.OpenSession())
{
var users=session.Query().ToList();
foreach(用户中的var用户)
{
var newuser=新用户
{
Id=user.Email,
DisplayName=user.DisplayName
};
会话存储(newuser);
删除(用户);
}
session.SaveChanges();
}

Id字段是文档的基本部分,因为它是用于查找文档的键。这就是为什么你不能更改它。创建一个新文档,然后删除旧文档是最简单的方法。谢谢,就像我几分钟前做的那样。当做
using (var session = _store.OpenSession())
{
    var users = session.Query<User>().ToList();
    foreach (var user in users)
    {
        var newuser = new User
                          {
                              Id = user.Email,
                              DisplayName = user.DisplayName
                          };

        session.Store(newuser);
        session.Delete(user);
    }
    session.SaveChanges();
}