erreur « L'une des entrées de demande non valide » lors d'une tentative de mise à jour Azure Table Storage

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

Question

Je tente de mettre à jour une entrée dans Azure Table Storage. La fonction est:

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();
        }

S'il est une nouvelle entrée (le chemin « bug.RowKey == null »), il fonctionne très bien. Si elle est une mise à jour à une entité existante, l'exception « AttachTo », et la « UpdateObject » appelle le travail, mais quand il arrive à « SaveChanges », il lance le « L'une des entrées de demande non valide ».

La classe qui est stockée est:

[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; }
}

Quelqu'un sait quel est le problème?

Merci pour toute aide.

Était-ce utile?

La solution

Dans le cas où quelqu'un est à la recherche de la réponse:

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


Travailler dans le contexte de la table, je devais changer l'appel:

_context.AttachTo(c_TableName, bug); 

à:

_context.AttachTo(c_TableName, bug, "*"); 

Autres conseils

Vous pouvez aussi obtenir cette erreur si vous définissez par erreur la RowKey à une valeur que vous avez déjà utilisé (pas que vous obtiendrez ce problème avec le code dans la question). J'ai essayé de pousser plus de 50 entités en une seule fois et avait accidentellement l'ensemble RowKey à la même valeur pour deux des entités.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top