azure cosmos DB没有在xamarin.forms中创建数据库下的容器



我在这里学习了这个教程youtubetutorial github

我下面的代码(由于明显的原因取出了密钥(

using Microsoft.Azure.Cosmos;
using System;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace azurebasics {
public partial class App: Application {
public App() {
InitializeComponent();
MainPage = new MainPage();
CreateItem().Wait();
}
private static async Task CreateItem() {
var cosmosUrl = "";
var cosmoskey = "";
var databaseName = "DemoDB";
CosmosClient client = new CosmosClient(cosmosUrl, cosmoskey);
Database database = await client.CreateDatabaseIfNotExistsAsync(databaseName);
Container container = await database.CreateContainerIfNotExistsAsync(
"MyContainerName", "/partitionKeyPath", 400);
dynamic testItem = new {
id = Guid.NewGuid().ToString(), partitionKeyPath = "MyTestPkValue", details = "it's working"
};
var response = await container.CreateItemAsync(testItem);
}
protected override void OnStart() {}
protected override void OnSleep() {}
protected override void OnResume() {}
}
}

所以我会运行这段代码,它会创建没有容器的数据库,如下所示我很困惑,因为如果连接进入数据库,它就能工作。我在github和他的教程之间发现的唯一奇怪的事情是在他有的视频中

var response = await container.CreateItemAsync(testItem);

并且github具有

ItemResponse<dynamic> response = await container.CreateItemAsync(testItem);

首先,请遵循性能指南,并拥有CosmosClient的单例实例。每次插入1个项目时创建一个新实例将对应用程序不利。

其次,您正在执行阻塞异步调用CreateItem().Wait();,这可能会产生死锁。根据Xamarin文档中的建议,尝试执行异步操作:https://learn.microsoft.com/xamarin/cross-platform/platform/async例如,绑定到实际执行保存的按钮。

相关内容

  • 没有找到相关文章

最新更新