如何解决Azure表存储分区键行键,如何在对应相同分区和不同rowKey的位置插入多个实体?
我是C#.net开发人员,正在创建一个电子邮件跟踪系统。我想将数据存储到Azure表存储中,但是我想使用不同的行键在同一分区中创建所有实体。我的属性键相同,但值不同。例如:
partition key = "Test+id"
row key=123
properties:
subject:"Hello",from:"xyz@gmail.com",to:"abc@gmail.com",body:"Hello I am a test email"
现在,我想创建一个上述副本,但具有不同的rowKey值,相同的分区键值和相同的属性键,但具有不同的值。像这样:
partition key = "Test+id",row key="787",properties:
subject: "HelloTesting",from:"sam@gmail.com",to:"alex@gmail.com",body: "Hello I am a test email2,this is so nice"
这是我用来添加属性的C#代码:
foreach (KeyValuePair<string,string> keyValuePair in list)
{
dynamicTableEntity.RowKey = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.SSS");
Console.WriteLine(keyValuePair.Key);
if (keyValuePair.Key.Equals("subject"))
{
dynamicTableEntity.Properties.Add("subject",EntityProperty.CreateEntityPropertyFromObject(keyValuePair.Value));
}
else if (keyValuePair.Key.Equals("toRecipients") )
{
dynamicTableEntity.Properties.Add("toRecipients",EntityProperty.CreateEntityPropertyFromObject(keyValuePair.Value));
}
else if (keyValuePair.Key.Equals("from") )
{
dynamicTableEntity.Properties.Add("from",EntityProperty.CreateEntityPropertyFromObject(keyValuePair.Value));
}
else if (keyValuePair.Key.Equals("bodyPreview") )
{
dynamicTableEntity.Properties.Add("bodyPreview",EntityProperty.CreateEntityPropertyFromObject(keyValuePair.Value));
}
else
{
dynamicTableEntity.Properties.Add(keyValuePair.Key,EntityProperty.CreateEntityPropertyFromObject(keyValuePair.Value));
}
}
任何帮助将不胜感激。
解决方法
您插入实体的代码对我有用。只是为了简单起见,因为您知道数据类型:
foreach (KeyValuePair<string,string> keyValuePair in list)
{
if (keyValuePair.Key.Equals("subject"))
{
dynamicTableEntity.Properties.Add("subject",EntityProperty.GeneratePropertyForString(keyValuePair.Value));
}
...
}
由于你没有提到你得到什么异常,我假设当行键在一秒钟内获得与使用的“SSS”相同的值时,会出现 RowKey 冲突在 DateTime 中没有效果。尝试使用 fff
或 FFF
获得 milliseconds。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。