我有一个包含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等等?想法?
答案 0 :(得分:2)
最简单的方法是在UserAccount类中使用字符串Id属性,并为其指定值“UserAccounts /”。这个尾随斜杠将要求RavenDB使用类似身份的进程而不是HiLo为其分配ID。它有点慢,但它会起作用。
解决这个问题的更好方法是更改服务器上的HiLo文档,使它们从第一个可用范围开始,但这样更麻烦。