Azure TableServiceContext.SaveChanges()失败
我正在寻找上述方法失败的原因 在我的TableServiceContext子类中,我有:Azure TableServiceContext.SaveChanges()失败,azure,azure-table-storage,Azure,Azure Table Storage,我正在寻找上述方法失败的原因 在我的TableServiceContext子类中,我有: public void AddDevice(Device d) { d.PartitionKey = "A"; d.RowKey = Guid.NewGuid().ToString(); this.AddObject("Devices", d); this.SaveChanges(); } 调用SaveChanges()
public void AddDevice(Device d)
{
d.PartitionKey = "A";
d.RowKey = Guid.NewGuid().ToString();
this.AddObject("Devices", d);
this.SaveChanges();
}
调用SaveChanges()
失败,并向diagnostics发送一条非常通用的消息:
An error occurred while processing this request.. Stack: at System.Data.Services.Client.DataServiceContext.SaveResult.HandleBatchResponse()
at System.Data.Services.Client.DataServiceContext.SaveResult.EndRequest()
at System.Data.Services.Client.DataServiceContext.SaveChanges(SaveChangesOptions options)
at WorkerRole1.DeviceServiceContext.AddDevice(Device d) in DeviceServiceContext.cs:line 30
有什么不对劲吗?
设备表已存在。存储帐户已存在并且似乎正常
非常感谢 一种可能性是设备类不可序列化
异常可能是由多种原因引起的,请参阅博客文章中的一些示例。经过大量跟踪和从头开始,结果发现SaveChanges()方法对我的实体对象中的一个属性不满意。内部异常谈到“方法未实现”。已修复,但更精确的异常消息会更好…我是Azure新手,但有人告诉我Azure不允许Blob、队列或表名使用大写字母。。。 也许问题不在于对象或方法,而在于表名,因为它被称为“设备”,而不是“设备”。。。
但我不确定。。。希望这会有所帮助。谢谢!我用[DataContract]和[DataMember]装饰了设备,以确定这一点。还是一样的结果。一些挖掘发现this.SaveChanges抛出了一个DataServiceRequestException。there中包含的BatchStatusCode是-1,这没有意义(应该是http代码?)。有趣的是,Azure会对CamelCase感到不安。这似乎不是我的问题。