RavenDB Client 死于 session.Store 并且永远不会 returns

RavenDB Client dies in session.Store and never returns

我正在尝试将用户代码脚本保存在 RavenDB 中,到目前为止几乎一切正常。我从一个单独的进程中获取了一个脚本,我能够加载该脚本,对其进行编辑,然后将其保存回数据库。

当我创建一个新脚本并尝试将其插入数据库时​​出现问题。我使用下面的代码。

public static void AddUserScript(UserScripts entity, string RavendbUrl, int userid)
{
    try
    {
    IvcRavenDB raven = new IvcRavenDB();
    var store = raven.InitRavenDB(RavendbUrl, "UserScripts");

    entity.Updated = DateTime.Now.ToString();
    entity.Created = DateTime.Now.ToString();
    entity.ScriptFileLength = entity.Script.Length;
    entity.userid = userid;

    using (var session = store.OpenSession())
    {
        session.Store(entity); // DIES HERE
        session.SaveChanges();
    }
    }
    catch (Exception ex)
    {
    var mess = ex.Message;
    }
}

当我说dies的时候,下一行没有执行,没有异常,而且我也没有看到任何错误,这很奇怪。几乎完全相同的代码用于保存具有 Id 的实体,唯一的区别是 添加时的 Id 字段为 null

我在 Net Core 2.0 中使用 RavenDB 4 和 Raven Client 4.02。

我是 Raven 的新手,甚至不知道从哪里开始才能正确无误地解决这个问题,所以任何帮助都会很棒。

不管什么原因,让Id为空导致了问题,可能是客户端的版本问题,我不确定。但是我找到了两个文档,描述了几种生成 Id 的方法,并且它们都一致地工作。

4种获取Id的方法

  1. 语义ID 此 ID 是通过在文档 ID 中输入实际字符串生成的。 即 "users/ayende@hr.com"

  2. Server-Side ID 此 ID 是通过在文档 ID 中输入:"users/" 生成的。

  3. 身份 此 ID 是通过在文档 ID 中输入:"users|" 生成的。

  4. GUID 此 ID 是通过将文档 ID 字段留空生成的

可在此处找到更多信息:Document Identifier Generation