2017-06-23 8 views
0

documentdbを使用して2つのjsonドキュメントを挿入し、それらを「名前をつけて」という名前のリストに入れました。私は更新された値と現在のドキュメントをしたいが、私は私を作成しようとした新しいdocument.Whenとして、それらを必要とする指定されたIDまたは名前を持つリソースがすでに存在しています - Dcoumentdb

{ 
"HotelCriteria": { 
    "HotelCode": "101920", 
    "HotelName": "TestThe Zuri" 
}, 
"RoomTypes": { 
    "RoomTypeList": [ 
     { 
      "InvTypeCode": "ZCR", 
      "Name": "Zuri Club Room", 
      "BaseOccupancy": 2, 
      "MaxOccupancy": 3, 
      "Quantity": 66, 
      "IsRoomActive": 1, 
      "RoomDescription": "", 
      "Availability": 0, 
      "Mon": "0", 
      "Tue": "0", 
      "Wed": "0", 
      "Thur": "0", 
      "Fri": "0", 
      "Sat": "0", 
      "Sun": "0", 
      "CountType": "0", 
      "Count": "0" 
     }, 
     { 
      "InvTypeCode": "ZRR", 
      "Name": "Zuri Room", 
      "BaseOccupancy": 2, 
      "MaxOccupancy": 3, 
      "Quantity": 90, 
      "IsRoomActive": 1, 
      "RoomDescription": "", 
      "Availability": 0, 
      "Mon": "0", 
      "Tue": "0", 
      "Wed": "0", 
      "Thur": "0", 
      "Fri": "0", 
      "Sat": "0", 
      "Sun": "0", 
      "CountType": "0", 
      "Count": "0" 
     }, 
     { 
      "InvTypeCode": "ZSR", 
      "Name": "Zuri Suite Room", 
      "BaseOccupancy": 2, 
      "MaxOccupancy": 3, 
      "Quantity": 4, 
      "IsRoomActive": 1, 
      "RoomDescription": "", 
      "Availability": 0, 
      "Mon": "0", 
      "Tue": "0", 
      "Wed": "0", 
      "Thur": "0", 
      "Fri": "0", 
      "Sat": "0", 
      "Sun": "0", 
      "CountType": "0", 
      "Count": "0" 
     } 
    ] 
}, 
"RatePlans": { 
    "RatePlanList": [ 
     { 
      "RatePlanCode": "B2C00001", 
      "RatePlanCategory": "B2C", 
      "RatePlanStatusType": 1, 
      "RatePlanName": "Channel Rates", 
      "Description": "Channel Rates", 
      "InvTypeCode": "ZCR", 
      "MealPlanCode": "CP", 
      "MealPlanDesc": "Continental Plan", 
      "Start": "2016-06-27", 
      "End": "2017-03-31", 
      "CurrencyCode": "INR" 
     }, 
     { 
      "RatePlanCode": "B2C00001", 
      "RatePlanCategory": "B2C", 
      "RatePlanStatusType": 1, 
      "RatePlanName": "Channel Rates", 
      "Description": "Channel Rates", 
      "InvTypeCode": "ZRR", 
      "MealPlanCode": "CP", 
      "MealPlanDesc": "Continental Plan", 
      "Start": "2016-06-27", 
      "End": "2017-03-31", 
      "CurrencyCode": "INR" 
     }, 
     { 
      "RatePlanCode": "B2C00001", 
      "RatePlanCategory": "B2C", 
      "RatePlanStatusType": 1, 
      "RatePlanName": "Channel Rates", 
      "Description": "Channel Rates", 
      "InvTypeCode": "ZSR", 
      "MealPlanCode": "CP", 
      "MealPlanDesc": "Continental Plan", 
      "Start": "2016-06-27", 
      "End": "2017-03-31", 
      "CurrencyCode": "INR" 
     } 
    ] 
}, 
"Inclusions": { 
    "InclusionList": [ 
     { 
      "MealPlanCode": "CP", 
      "MealPlanDesc": "Continental Plan" 
     } 
    ] 
}, 
"id": "8f236805-d3a5-498b-9cc3-efa7448faa63", 
"_rid": "SVcZALakfQAEAAAAAAAAAA==", 
"_self": "dbs/SVcZAA==/colls/SVcZALakfQA=/docs/SVcZALakfQAEAAAAAAAAAA==/", 
"_etag": "\"00004b09-0000-0000-0000-594a02e80000\"", 
"_attachments": "attachments/", 
"_ts": 1498022618 

}

を挿入ここに私のコードは

foreach (var item in Hotelwithroomtype) 
      { 
       foreach (var cal in Calendardata) 
       { 

        item.CalendarDate = Convert.ToDateTime(cal.CalendarDate); 
        item.CalendarDay = cal.Calendarday; 
        item.issweekday = Convert.ToBoolean(cal.isweekday); 
        item.issweekend = Convert.ToBoolean(cal.isweekend); 

        foreach (var prop in item.RoomTypes.RoomTypeList) 
        { 

         prop.Mon = "0"; 
         prop.Tue = "0"; 
         prop.Wed = "0"; 
         prop.Thur = "0"; 
         prop.Fri = "0"; 
         prop.Sat = "0"; 
         prop.Sun = "0"; 
         prop.Count = "0"; 
         prop.CountType = "0"; 

        } 
        // var docExists = client.CreateDocumentQuery(UriFactory.CreateDocumentCollectionUri("next", "nextCollection")) 
        //.Where(doc => doc.Id == item.id) 
        //.Select(doc => doc.Id) 
        //.AsEnumerable() 
        //.Any(); 

        await client.CreateDocumentAsync(collectionLink, item); 

       } 


      } 

だサンプルのJSON文書次のエラーが表示されます。 "指定されたIDまたは名前のリソースが既に存在しています。"

おかげ

答えて

1

は、既存の文書のidに等しいidではなく、新しい文書にしようとしています。これは許可されていないため、操作は失敗します。変更したコピーを挿入する前に、新しいidを割り当てる必要があります。

+0

これを行うにはどのようなアイディアがありますか?または新しいリストを作成して新しい文書として追加できますか?または可能であれば自動ID生成を無効にし、私のプロパティのidを上記の場合にidとして使用することができますか? – Melvin

+0

@Melvinあなたのクラスはすでに 'id'プロパティを持っていると思います(私はコメント付きコードの' item.id'でもそれを見ることができます)。さもなければ私はあなたのコードが動作することを期待するでしょう。 'id'を持っているなら、それをリセットする必要があります。 'id'も計算されたプロパティーなので、getter/setterでホテルコードを使うことができます。 – Mikhail

+0

そのIDは自動生成されました。手動で設定しなかったので、ドキュメント作成時にその自動生成を無効にできるオプションはありますか? – Melvin

関連する問題