猿问

如何使用 C# 在 Azure 表存储中自动生成 RowKey

我正在尝试从 Micorosft Docs 教程中的预定义姓氏更改 RowKey:https ://docs.microsoft.com/en-us/azure/cosmos-db/table-storage-how-to-use-dotnet#add -an-entity-to-a-table,为唯一值。


这是我当前的代码:


private void storeuserinput(Activity activity)

        {

            var uid = activity.From.Id;

            var uname = activity.From.Name;


            if (activity.Text?.ToLower().ToString() == "no" || activity.Text?.ToLower().ToString() == "NO" || activity.Text?.ToLower().ToString() == "No" || activity.Text?.ToLower().ToString() == "Nope" || activity.Text?.ToLower().ToString() == "nope")

            {

                var userinput = firstmessage;


                string connectionString = CloudConfigurationManager.GetSetting("StorageConnectionString");


                // Parse the connection string and return a reference to the storage account.

                CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));


                // Create the table client.

                CloudTableClient tableClient = storageAccount.CreateCloudTableClient();


                // Retrieve a reference to the table.

                CloudTable table = tableClient.GetTableReference("UnansweredChatBot");


                // Create the table if it doesn't exist.

                table.CreateIfNotExists();


                // Create a new customer entity.

                CustomerEntity customer1 = new CustomerEntity("NoSolution", "Smith");

                customer1.Query = firstmessage;


                // Create the TableOperation object that inserts the customer entity.

                TableOperation insertOperation = TableOperation.Insert(customer1);


                // Execute the insert operation.

                table.Execute(insertOperation);

            }


            //extract other data from "activity" object


            //your code logic here

            //store data in your table storage


            //Note: specifcial scenario of user send attachment

        }



拉丁的传说
浏览 205回答 1
1回答

明月笑刀无情

在您的客户实体类中,您正在调用构造函数public CustomerEntity(string lastName, string firstName){     this.PartitionKey = lastName;    this.RowKey = firstName;}因此,当您初始化一个新对象时,您会传递两个参数(如构造函数中定义的)firstname和lastname.新的这些是由构造函数按名称设置的,并且在它们的上下文之外(即在表存储中)没有任何意义。CustomerEntity customer1 = new CustomerEntity("NoSolution", "Smith");在您的代码中,您需要做的就是将构造函数更改为public CustomerEntity(string requesterName, string uniqueRowKey){     this.PartitionKey = requesterName ;    this.RowKey = uniqueRowKey;}您的 RowKey 必须是唯一的,并且您的分区键用于通过对相似类型的行进行分组来使搜索更容易。然后你可以像这样传递给你的构造函数:string rowKey = Guid.NewGuid().ToString("N"); //This give you a unique guid with no hyphens.CustomerEntity customer1 = new CustomerEntity("John Smith", rowKey);这将分别将您的实体插入到 Partition Key 和 Row Key 中。这就是你要找的东西吗?
随时随地看视频慕课网APP
我要回答