Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C#/MVC更新RavenDB中现有列表的最佳方法?_C#_Asp.net Mvc_Ravendb - Fatal编程技术网

使用C#/MVC更新RavenDB中现有列表的最佳方法?

使用C#/MVC更新RavenDB中现有列表的最佳方法?,c#,asp.net-mvc,ravendb,C#,Asp.net 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>(); } } 这些

我有一个文档类:

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>();
    }
}
这些都是标准的,效果很好,最后我得到了一个如下的文档:

{
    "OwnerId": "ApplicationUsers/1",
    "Files": [
        "File1.pdf",
        "Another File.pdf"
    ]
}
现在,当我想向现有文档添加更多文件名(或从现有文档中删除文件名)时,我是否必须将现有文件名持久保存在隐藏元素中,或者RavenDB是否有某种更新命令,允许持久保存现有文档并有条件地向该文件元素添加值

作为参考,将列表“填充”到隐藏元素中的最佳方法是什么?这不会引发错误:

@Html.HiddenFor(model => model.Files)
但它将“System.Collections.Generic.List`1[System.String]”放在隐藏元素中,因为它显然不是字符串,而是列表

因为我以前从未与RavenDB合作过,所以我不清楚这里的最佳实践,在浏览了RavenDB的几本书之后,令人惊讶的是,我没有看到任何与手头的基本任务相符的东西


我希望我能充分解释我想做的事情

在我的情况下,要创建多个隐藏输入,所有命名的“文件”都能完美工作:

foreach (var item in Model.Files)
{
   <input type="hidden" name="files" value="@item" />
}
foreach(Model.Files中的var项)
{
}

仍然似乎不是处理列表类型的一种非常优雅的方式

您是否使用NFS来存储文件本身?因为如果是这样的话,我建议您将DocId存储在给定文件所属的文件元数据中——这样更易于维护。(例如,假设FS和RavenDB在另一台服务器上运行,FS服务器脱机。然后您必须自己撤消操作,而如果文档id在文件元数据中,并且保存失败,则您不必撤消任何操作,因为没有任何操作,因为首先不会保存任何操作)不,我正在使用Amazon S3存储文件。这是我在其他应用程序中所做的。这一部分没有问题。我只是想确定更新列表的最佳实践。你是将列表填充在隐藏字段中,还是使用多个隐藏字段?你能更新部分文档还是必须更新整个文档?我已经完成了更新部分文档时,其他值将被删除。
@Html.HiddenFor()
创建一个
-并且输入只能保存一个值,不能保存一个集合。您需要为集合中的每个项目创建一个输入-
foreach (var item in Model.Files)
{
   <input type="hidden" name="files" value="@item" />
}