0
我有一個文檔類:使用C#/ MVC更新RavenDB中現有列表的最佳方法?
public class Document
{
public int Id { get; set; }
public String PropertyOwnerId { get; set; }
public List<string> Files { get; set; }
public Document()
{
this.Files = new List<string>();
}
}
用戶將上傳文件和文件名都存儲在一個循環。
foreach (var file in documents)
{
model.Files.Add(fileName);
}
這是所有標準和工作正常,我結束了一個文件,看起來像這樣:
{
"OwnerId": "ApplicationUsers/1",
"Files": [
"File1.pdf",
"Another File.pdf"
]
}
現在,當我想更多的文件名添加到現有的文件(或刪除文件現有文檔中的名稱),我是否必須在隱藏元素中保留現有文件名,或者是否存在RavenDB具有的某種更新命令,以允許持久化現有文檔並有條件地向此Files元素添加值?
作爲一個參考點,什麼是「填充」到隱藏元素列表的最佳方式?這不會引發錯誤:
@Html.HiddenFor(model => model.Files)
但是它把「System.Collections.Generic.List`1 [System.String]」中隱藏的元素,因爲這顯然不是一個字符串,它是一個列表。
因爲在我對這裏的最佳實踐還不清楚之前,我從未與RavenDB合作過,並且在瀏覽了幾本RavenDB書籍之後,出人意料的是,我沒有看到任何似乎與此基本任務相對應的東西。
我希望我能解釋一下我正在努力做好的事情。
你是否使用RavenFS來存儲文件本身?因爲如果是這樣的話,我建議您將DocId存儲在給定文件所屬的文件元數據中 - 這樣更容易維護它,就像imo一樣。 (想象一下,例如,FS和RavenDB運行在不同的服務器上,並且FS服務器脫機,那麼你必須自己撤消這些操作,而如果doc ID在文件元數據中,並且保存失敗,不需要任何東西,因爲沒有東西會得到保存)。 –
不,我正在使用Amazon S3來存儲文件。這是我在其他應用程序中完成的。該部分沒有問題。我只是想確定更新列表的最佳做法。你是否將這個列表填入隱藏字段,或使用多個隱藏字段?你能更新一個部分文件還是你必須更新整個文件?我試過更新部分文檔,其他值被擦除。 – TheSynoptical
'@ Html.HiddenFor()'創建一個'' - 並且輸入只能保存一個值,而不是集合。您需要爲集合中的每個項目創建一個輸入 - –