我需要在我的项目中使用嵌入式RavenDb . 我安装了Nuget Package“RavenDb.Embedded” . 之后,以下dll已添加到项目中:
-
Raven.Abstractions
-
Raven.Client.LigthWeight
-
Raven.Database
我的实体类用于存储数据:
public class TagLastRead
{
public string Id { get; set; }
public DateTime LastReceiveDateTime { get; set; }
}
我创建了一个RavenConfig类,如下所示:
public class RavenConfig
{
private static IDocumentStore _store;
public static IDocumentStore Store
{
get
{
if (_store == null)
throw new InvalidOperationException(
"IDocumentStore has not been initialized.");
return _store;
}
}
public static IDocumentStore Initialize()
{
_store = new EmbeddableDocumentStore
{
ConnectionStringName = "LocalTagReads"
};
_store.Conventions.IdentityPartsSeparator = "-";
_store.Initialize();
IndexCreation.CreateIndexes(Assembly.GetCallingAssembly(), Store);
return _store;
}
}
我的app.Config文件在“connectionStrings”下面有以下行
<add name="LocalTagReads" connectionString="DataDir = ~\Data" />
我需要访问RavenDb的类看起来像这样
public class SampleClass
{
public SampleClass()
{
RavenConfig.Initialize();
}
public DoStuff(TagInfo value)
{
using(IDocumentSession session = RavenConfig.Store.OpenSession())
{
TagLastRead t = session.Load<TagLastRead>(value.Tagname);
if (t == null)
{
t = new TagLastRead();
session.Store(t,value.Tagname);
}
t.LastReceiveDateTime = value.Time;
session.SaveChanges();
}
}
}
创建“Data”目录,其中包含一些文件和子目录 . 问题是当遇到以下代码行时
TagLastRead t = session.Load<TagLastRead>(value.Tagname);
该程序永远挂起,输出中没有任何错误 . 通过在调试中点击暂停按钮,我可以看到它卡在MemoryStatistics类中 .
EDIT
我使用的是3.0.30037版
调用 IndexCreation.CreateIndexes
或 session.Load
或 session.SaveChanges
时,我在输出日志中有以下异常
-
Raven.Client.Lightweight.dll中出现'Raven.Abstractions.Connection.ErrorResponseException'类型的第一次机会异常
-
mscorlib.dll中发生了'Raven.Abstractions.Connection.ErrorResponseException'类型的第一次机会异常
-
mscorlib.dll中出现'Raven.Abstractions.Connection.ErrorResponseException'类型的第一次机会异常
-
Raven.Client.Lightweight.dll中出现'Raven.Abstractions.Connection.ErrorResponseException'类型的第一次机会异常
-
mscorlib.dll中出现'Raven.Abstractions.Connection.ErrorResponseException'类型的第一次机会异常
-
mscorlib.dll中出现'Raven.Abstractions.Connection.ErrorResponseException'类型的第一次机会异常
等待一段时间后,我有以下错误
System.InvalidOperationException:查询失败 . 请参阅内部异常了解详细信---> System.TimeoutException:操作超时后:00:01:41.1979667 ---> System.AggregateException:AsyncHelpers.Run方法抛出异常 . ---> System.Threading.Tasks.TaskCanceledException:任务被取消 . 在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务),位于Raven.Client.Connection的System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() .Implementation.HttpJsonRequest . <> c__DisplayClasse . <b__d> d__10.MoveNext()在c:\ Builds \ RavenDB-Stable-3.0 \ Raven.Client.Lightweight \ Connection \ Implementation \ HttpJsonRequest.cs:第226行