我正在尝试更新Azure表存储中的条目。功能是:
public void SaveBug(DaBug bug)
{
bug.PartitionKey = "bugs";
bug.Timestamp = DateTime.UtcNow;
if (bug.RowKey == null || bug.RowKey == string.Empty)
{
bug.RowKey = Guid.NewGuid().ToString();
_context.AddObject(c_TableName, bug);
}
else
{
_context.AttachTo(c_TableName, bug);
_context.UpdateObject(bug);
}
_context.SaveChanges();
}
如果是新条目(“bug.RowKey == null”路径),那么它可以正常工作。如果它是对现有实体的更新,则“AttachTo”和“UpdateObject”调用有效,但当它到达“SaveChanges”时,它会抛出“其中一个请求输入无效”异常。
正在存储的类是:
[DataContract]
[DataServiceKey("RowKey")]
public class DaBug
{
[DataMember]
public bool IsOpen { get; set; }
[DataMember]
public string Title { get; set; }
[DataMember]
public string Description { get; set; }
[DataMember]
public string SubmittedBy { get; set; }
[DataMember]
public DateTime SubmittedDate { get; set; }
[DataMember]
public string RowKey { get; set; }
public DateTime Timestamp { get; set; }
public string PartitionKey { get; set; }
}
有谁知道问题是什么?
感谢您的帮助。
答案 0 :(得分:6)
如果有人在寻找答案:
通过表格上下文,我不得不改变呼叫:
_context.AttachTo(c_TableName, bug);
为:
_context.AttachTo(c_TableName, bug, "*");
答案 1 :(得分:2)
如果您错误地将RowKey设置为您已经使用过的值,也会出现此错误(并非您在问题中遇到此问题)。我试图一次性推送50多个实体,并意外地将RowKey设置为两个实体的相同值。