"أحد إدخال الطلبات غير صالحة" عند محاولة تحديث تخزين جدول Azure

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

سؤال

أحاول تحديث إدخال في تخزين جدول 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" ، و "تحديث" المكالمات "يعمل ، ولكن عندما يصل إلى" 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; }
}

هل يعرف احد ما هي المشكلة؟

شكرا على اي مساعدة.

هل كانت مفيدة؟

المحلول

في حال كان أي شخص يبحث عن الإجابة:

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, "*"); 

نصائح أخرى

يمكنك أيضًا الحصول على هذا الخطأ إذا قمت بتعيين RowKey عن طريق الخطأ على قيمة استخدمتها بالفعل (وليس أنك ستحصل على هذه المشكلة مع التعليمات البرمجية في السؤال). حاولت دفع أكثر من 50 كيانًا دفعة واحدة ، وربط Rowkey بطريق الخطأ بنفس القيمة لاثنين من الكيانات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top