de error “Una de las entradas de petición no es válida” al intentar actualizar Azure Storage Table
-
25-09-2019 - |
Pregunta
Estoy intentando actualizar una entrada en la tabla de almacenamiento de Azure. La función es:
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();
}
Si se trata de una nueva entrada (el camino "bug.RowKey == null"), entonces funciona bien. Si se trata de una actualización de una entidad existente, entonces el "Adjuntarpara", y el "updateObject" llama trabajo, pero cuando se pone a "SaveChanges", se lanza el "Una de las entradas de petición no es válida" excepción.
La clase que se está almacenando es:
[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; }
}
¿Alguien sabe cuál es el problema?
Gracias por cualquier ayuda.
Solución
En caso de que alguien está buscando la respuesta:
Trabajo a través del contexto de la tabla, que tenía que cambiar la llamada a partir de:
_context.AttachTo(c_TableName, bug);
a:
_context.AttachTo(c_TableName, bug, "*");
Otros consejos
También puede obtener este error si se establece por error la rowKey a un valor ya has probado (no es que se obtendría este problema con el código en la pregunta). Traté de empujar a más de 50 entidades de una sola vez, y sin querer tenido el conjunto rowKey al mismo valor para dos de las entidades.