de error “Una de las entradas de petición no es válida” al intentar actualizar Azure Storage Table

StackOverflow https://stackoverflow.com/questions/2608044

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.

¿Fue útil?

Solución

En caso de que alguien está buscando la respuesta:

http: // social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/0c9d476e-7970-422a-8b34-e987e41734df


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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top