2017-03-08 113 views
0

在微软的例子正确的方式,我看到两种方法来检查,如果像数据库,DocumentCollection,文档等DocumentDb对象存在:检查DocumentDB对象存在

首先是通过创建一个查询:

Database db = client.CreateDatabaseQuery().Where(x => x.Id == DatabaseId).AsEnumerable().FirstOrDefault(); 
if (db == null) 
    { 
     await client.CreateDatabaseAsync(new Database { Id = DatabaseId }); 
    } 

第二个是通过使用“尝试catch”块:

try 
    { 
     await this.client.ReadDatabaseAsync(UriFactory.CreateDatabaseUri(databaseName)); 
    } 
    catch (DocumentClientException de) 
    { 
     if (de.StatusCode == HttpStatusCode.NotFound) 
     { 
      await this.client.CreateDatabaseAsync(new Database { Id = databaseName }); 
     } 
     else 
     { 
      throw; 
      } 
    } 

什么是做在性能方面这个过程的正确方法是什么?

回答

2

如果这是您正在尝试执行的操作,则应该在DocumentDB SDK中使用新的CreateDatabaseIfNotExistsAsync而不是这两种方法。

就服务器资源(请求单位)而言,ReadDocumentAsync稍微比CreateDatabaseQuery轻,所以您应该尽可能使用它。

+0

谢谢。我使用的是旧版本的DocumentDB SDK,并且该函数不存在。 –