Ошибка «Один из входных данных запроса недопустим» при попытке обновить хранилище таблиц Azure - PullRequest
4 голосов
/ 09 апреля 2010

Я пытаюсь обновить запись в хранилище таблиц 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; }
}

Кто-нибудь знает в чем проблема?

Спасибо за любую помощь.

Ответы [ 2 ]

6 голосов
/ 09 апреля 2010

Если кто-то ищет ответ:

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


Работая с контекстом таблицы, мне пришлось изменить вызов:

_context.AttachTo(c_TableName, bug); 

до:

_context.AttachTo(c_TableName, bug, "*"); 
2 голосов
/ 12 сентября 2012

Вы также можете получить эту ошибку, если вы по ошибке установили RowKey в значение, которое вы уже использовали (не то, что вы получите эту проблему с кодом в вопросе). Я попытался нажать более 50 сущностей за один раз, и случайно для RowKey было установлено одинаковое значение для двух сущностей.

...