"أحد إدخال الطلبات غير صالحة" عند محاولة تحديث تخزين جدول Azure
-
25-09-2019 - |
سؤال
أحاول تحديث إدخال في تخزين جدول 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; }
}
هل يعرف احد ما هي المشكلة؟
شكرا على اي مساعدة.
المحلول
في حال كان أي شخص يبحث عن الإجابة:
العمل من خلال سياق الجدول ، اضطررت إلى تغيير المكالمة من:
_context.AttachTo(c_TableName, bug);
ل:
_context.AttachTo(c_TableName, bug, "*");
نصائح أخرى
يمكنك أيضًا الحصول على هذا الخطأ إذا قمت بتعيين RowKey عن طريق الخطأ على قيمة استخدمتها بالفعل (وليس أنك ستحصل على هذه المشكلة مع التعليمات البرمجية في السؤال). حاولت دفع أكثر من 50 كيانًا دفعة واحدة ، وربط Rowkey بطريق الخطأ بنفس القيمة لاثنين من الكيانات.
لا تنتمي إلى StackOverflow