为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
拉丁的传说 2021-11-21 10:40:01
我正在尝试从 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        }
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

在您的客户实体类中,您正在调用构造函数


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 中。


这就是你要找的东西吗?


查看完整回答
反对 回复 2021-11-21
  • 1 回答
  • 0 关注
  • 204 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信