2010-08-30 102 views
0

我正在使用asp.net MVC2。在RavenDB中更新文檔

我有一個模型定義爲

public class Department 
    { 
     [ScaffoldColumn(false)] 
     public object Id { get; set; } 

     [Required(ErrorMessage = "Department Name is required")] 
     [StringLength(25)] 
     [DisplayName("Department Name")] 
     public string Name { get; set; } 

     [DefaultValue(true)] 
     [DisplayName("Active?")]   
     public bool Active { get; set; } 
    } 

如何更新通過我的控制器現有的部門文件? 我的編輯動作定義爲

[HttpPost] 
public ActionResult Edit(string id, Department department) 
{ 
.. 
} 

回答說here告訴有一個PATCH命令來更新文檔。 但我沒有在Raven的客戶端API發現這IDocumentSession

我不想先獲取該文件,然後更新它喜歡它在RavenDB的MVCMusicStore例子做的方式

var albumModel = session.Load<Album>(id); 
      //Save Album 

      UpdateModel(albumModel, "Album"); 
      session.SaveChanges(); 

回答

4

你需要使用這樣的代碼:

DocumentStore.DatabaseCommands.Batch(
    new PatchCommandData{ 
     Key = "users/15", 
     Patches = new [] { 
      Type = "Set", 
      Name = "Email", 
      Value = "Ayende" 
     } 
    } 
); 

this thread在討論組更多信息

+0

感謝。我也嘗試設置由RavenDB自動生成的Id,然後存儲文檔dbSession.Store(department)。它也工作! – 2010-08-31 12:10:22