我正在调用我的 DocumentDB 数据库来查询一个人。如果此人不在数据库中,我会尝试将该人插入我的集合中。
当我检查集合时,我看到正在创建新人,但我的代码似乎挂在我第二次调用以将人插入集合的位置。知道为什么我的代码挂起吗?我没有包括所有节省空间的代码,例如 GetDatabaseAsync()、GetCollectionAsync() 等都在工作。
using (client = new DocumentClient(new Uri(endPointUrl), authorizationKey))
{
//Get the database
var database = await GetDatabaseAsync();
//Get the Document Collection
var collection = await GetCollectionAsync(database.SelfLink, "People");
string sqlQuery = "SELECT * FROM People f WHERE f.id = \"" + user.PersonId + "\"";
dynamic doc = client.CreateDocumentQuery(collection.SelfLink, sqlQuery).AsEnumerable().FirstOrDefault();
if (doc == null)
{
// User is not in the database. Add user to the database
try
{
**// This is where the code is hanging. It creates the user in my collection though!**
await client.CreateDocumentAsync(collection.DocumentsLink, user);
}
catch
{
// Handle error
}
}
else
{
// User is already in the system.
user = doc;
}
}
代码是否有可能挂起,因为我试图在同一个 USING 语句中查询和插入文档。
对我来说创建一个新的客户端实例并创建一个单独的块来处理文档 INSERT 是否更好?