RavenDB将已使用的Id分配给Document

时间:2013-01-29 16:39:48

标签: ravendb

我有一个包含UserAccounts列表的excel文件。我还有一个方法来导入这些UserAccounts并将它们保存到RavenDB中。在excel文件中,我存储了UserAccount对象的Id(useraccounts / 55)。 RavenDB没有分配值,我正在分配它。我的导入工作很棒。

然而,

稍后,我尝试使用以下方法通过管理面板保存新的UserAccount:

       [HttpPost]
            public ActionResult Create(UserAccountViewModel input)
            {
               // Validation omitted             

                    var model = new UserAccount()
                    {
                        Email = input.Email,
                        FirstName = input.FirstName,
                        LastName = input.LastName,
                        Phone = input.Phone,
                        Username = input.Username,
                        AuthorizeNetCustomerProfileId = customer.ProfileID,
                        Password = input.Password,

                    };

                    Raven.Store(model);
                    Raven.SaveChanges();
                    return RedirectToAction("Index");
             }

当我打电话

Raven.Store(model) 

它为新的UserAccount对象分配一个Id,但它从1开始。所以我第一次尝试这样做时,会将UserAccounts / 1分配给我的新UserAccount。问题是我的导入中已存在UserAccounts / 1,因此当我调用保存更改时,我收到了etag异常。

当我再次运行该方法时,它会分配UserAccounts / 2等等?想法?

1 个答案:

答案 0 :(得分:2)

最简单的方法是在UserAccount类中使用字符串Id属性,并为其指定值“UserAccounts /”。这个尾随斜杠将要求RavenDB使用类似身份的进程而不是HiLo为其分配ID。它有点慢,但它会起作用。

解决这个问题的更好方法是更改​​服务器上的HiLo文档,使它们从第一个可用范围开始,但这样更麻烦。