2017-03-08 170 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,並且該函數不存在。 –