W Azure DocumentDB użyciu .NET SDK, otrzymuję następujący błąd podczas wywoływania ReplaceDocumentAsync:DocumentDB ReplaceDocument zawodzi
„Błędy”: [ "Zawartość wejście jest nieważne, ponieważ wymagane właściwości -«id;»- brakuje "," Ładunek żądania jest nieważny. "] Zapewnienie ważnego ładunku żądania."]
Jest to scenariusz wpisu na blogu, po dodaniu nowego komentarza otrzymuję dokument, dodajemy komentarz i wywołuję ReplaceDocumentAsync. Oto jak to zrobić: class
string query = "SELECT * FROM Posts p WHERE p.id = 'some guid'";
var post = Client.CreateDocumentQuery<Post>(Collection.DocumentsLink, query)
.AsEnumerable().FirstOrDefault();
post.Comments.Add(comment);
Document doc = Client.CreateDocumentQuery(Collection.DocumentsLink)
.Where(d => d.Id == id)
.AsEnumerable()
.FirstOrDefault();
var document = await Client.ReplaceDocumentAsync(doc.SelfLink, item);
postu:
public class Post
{
public Post()
{
Comments = new List<Comment>();
}
public Guid Id { get; set; }
public List<Comment> Comments { get; set; }
...
}
Co robię źle?
Yup - musisz upewnić się, że "id" znajduje się w treści zastępowanego dokumentu. Aby wyjaśnić - "identyfikator" jest generowany automatycznie tylko wtedy, gdy nie istnieje podczas tworzenia dokumentu. 'id' nie jest automatycznie generowany podczas zamiany (stąd komunikat o błędzie). –
Czy istnieje sposób na zmianę nazwy tej właściwości, której oczekuje DocumentDb (w przeciwieństwie do dodawania atrybutu 'JsonProperty' do obiektu lub JObject (z różnych złożonych i kontekstowych powodów, nie mogę tego łatwo zrobić). na przykład, powiedz DocumentDb, aby użył "Id" lub "DocId" lub coś w tym stylu, zamiast "id?" –