我收到第 84 行和第 85 行的消息(这两个,使用行堆叠):
CA2000:Microsoft.Reliability:在方法“RavenDataAccess.GetRavenDatabase()”中,对象“<> g_initLocal9”并未沿所有异常路径进行处理。在对对象“<>g _initLocal9”的所有引用超出范围之前调用 System.IDisposable.Dispose。
DocumentStore 实现 IDisposable。
为什么?我还能如何处理 DocumentStore 对象?它们是在 using 块中创建的,我将它们放在我的 catch 块中。这应该如何解决?
private static IDocumentStore GetRavenDatabase()
{
Shards shards = new Shards();
try
{
using (DocumentStore docStore1 = new DocumentStore { Url = ConfigurationManager.AppSettings["RavenShard1"] }) // Line 84
using (DocumentStore docStore2 = new DocumentStore { Url = ConfigurationManager.AppSettings["RavenShard2"] }) // Line 85
{
shards.Add(docStore1);
shards.Add(docStore2);
}
using (ShardedDocumentStore documentStore = new ShardedDocumentStore(new ShardStrategy(), shards))
{
documentStore.Initialize();
IndexCreation.CreateIndexes(typeof(RavenDataAccess).Assembly, documentStore);
return documentStore;
}
}
catch
{
shards.ForEach(docStore => docStore.Dispose());
throw;
}
}