Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.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# 通过CSOM C更新SharePoint外部数据列(连接到SQL)#_C#_Csom_Sharepoint 2016 - Fatal编程技术网

C# 通过CSOM C更新SharePoint外部数据列(连接到SQL)#

C# 通过CSOM C更新SharePoint外部数据列(连接到SQL)#,c#,csom,sharepoint-2016,C#,Csom,Sharepoint 2016,我需要将文档添加到文档库(内部部署SharePoint 2016)并更新元数据。我已经拼凑了代码来添加文档,并成功地更新了多项选择字段,但我需要更新SharePoint从SQL数据库接收的外部数据字段。这可能吗 我的更新代码如下所示: public class MetaData { public string Field { get; set; } public string Value { get; set; } } priv

我需要将文档添加到文档库(内部部署SharePoint 2016)并更新元数据。我已经拼凑了代码来添加文档,并成功地更新了多项选择字段,但我需要更新SharePoint从SQL数据库接收的外部数据字段。这可能吗

我的更新代码如下所示:

    public class MetaData
    {
        public string Field { get; set; }

        public string Value { get; set; }
    }

    private static bool UpdateDocument(string fileName, List<MetaData> metadata)
    {
        bool _result = false;

        // Create context
        using (SP.ClientContext _context = new SP.ClientContext(_url))
        {
            // Get library
            SP.List _library = _context.Web.Lists.GetByTitle(_libraryName);

            // Get root folder of library
            SP.Folder _rootFolder = _library.RootFolder;

            // Load data
            _context.Load(_rootFolder);
            _context.ExecuteQuery();

            // Caculate file url
            string fileUrl = string.Format("{0}/{1}", _rootFolder.ServerRelativeUrl, fileName);

            SP.File _file = _context.Web.GetFileByServerRelativeUrl(fileUrl);
            _context.Load(_file);
            _context.ExecuteQuery();

            SP.ListItem _item = _file.ListItemAllFields;
            _context.Load(_item);
            _context.ExecuteQuery();

            foreach (MetaData _mdata in metadata)
            {
                SP.Field _field = _library.Fields.GetByTitle(_mdata.Field);
                _context.Load(_field);
                _context.ExecuteQuery();

                _item[_field.InternalName] = _mdata.Value;
                _item.Update();
                _context.ExecuteQuery();
            }

            _result = true;
        }

        return _result;
    }
公共类元数据
{
公共字符串字段{get;set;}
公共字符串值{get;set;}
}
私有静态bool UpdateDocument(字符串文件名、列表元数据)
{
bool_结果=假;
//创建上下文
使用(SP.ClientContext _context=new SP.ClientContext(_url))
{
//获取库
SP.List\u library=\u context.Web.Lists.GetByTitle(\u libraryName);
//获取库的根文件夹
SP.Folder\u rootFolder=\u library.rootFolder;
//加载数据
_加载(_rootFolder);
_context.ExecuteQuery();
//计算文件url
string fileUrl=string.Format(“{0}/{1}”,_rootFolder.ServerRelativeUrl,fileName);
SP.File _File=_context.Web.GetFileByServerRelativeUrl(fileUrl);
_加载(_文件);
_context.ExecuteQuery();
SP.ListItem _item=_file.ListItemAllFields;
_加载(_项);
_context.ExecuteQuery();
foreach(元数据中的元数据)
{
SP.Field\u Field=\u library.Fields.GetByTitle(\u mdata.Field);
_加载(_字段);
_context.ExecuteQuery();
_项目[\u field.InternalName]=\u mdata.Value;
_item.Update();
_context.ExecuteQuery();
}
_结果=真;
}
返回结果;
}
仅供参考:我需要更新的字段称为“客户端”

我可以设置字段本身,但当然,虽然显示了该值,但该值实际上并不“在那里”。我读过几篇关于如何在运行SharePoint的机器上执行此操作的文章,但必须有一种从客户端执行此操作的方法