2014-12-02 73 views
0

好日子,在RavenDB文檔更新場

我有一個RavenDB JSON文件,其中一個字段(「信息」)包含一個字符串,看起來像這樣:

"{\"value1\":\"9\", \"value2\": \"dog\", ....}" 

我想刪除逃脫"\"字符,因此它將被RavenDB識別爲JSON列表。

不過,我試圖與

newString = oldString.Replace("\\", "")更新文件,

newString = oldString.Replace(@"\", "")

newString = oldString.Trim(new Char[] { @"\" })

,但它不工作。應用上述這些方法後,字符串看起來沒有改變。

請參閱完整的代碼如下:

  while(true) 
      { 
       var result = session.Query<Documents>() 
        .Take(1000).Skip(i) 
        .ToList(); 
       if (result.Count == 0) 
        break; 

       foreach (var r in result) 
       { 
        string rInfo = r.Info.ToString(); 
        rInfo = rInfo.Replace("\\", ""); 

        PATCHED_Doc r_Doc = new PATCHED_Doc() 
        { 
         Info = rInfo, 
         Value = "test", 
         Id = r.Id, 
         Date = r.Date, 
        }; 

        session.Store(r_Doc); 
        session.SaveChanges(); 

       } 

       session.SaveChanges(); 

       i += result.Count; 
      } 



public class PATCHED_Doc 
{ 
    public string Info { get; set; } 
    public string Value { get; set; } 
    public int Id { get; set; } 
    public string Date { get; set; } 
} 

預先感謝您的幫助。

+0

請發佈完整的代碼。你有沒有注意到你不能在.NET中更改字符串?它們是不可改變的。你需要創建一個新的。你調用的方法正是這樣做的,你可能沒有正確使用返回值。 – nvoigt 2014-12-02 12:15:37

+0

@nvoigt編輯我的問題。希望更清楚。 – Martin 2014-12-02 12:28:57

回答

1

您需要將JSON解析爲一個對象,然後將其交給Raven DB。字符串被視爲字符串。使用JSON.NET庫到parse it into Anonymous objects。將您的Info屬性更改爲對象類型。然後將匿名對象分配給Info屬性。

+0

謝謝。使用Newtonsoft.Json.Linq來解析字符串。然而,Json對象似乎並未在RavenDB中正確保存。請參閱[this](http://stackoverflow.com/questions/27253014/ravendb-storing-json-object-c) – Martin 2014-12-02 15:30:38