4

我已经在网上找了 4 天了,但我仍然不知道为什么我的代码不起作用......

我正在使用带有对共享点 listData 的服务引用的 ASP.NET MVC 4 应用程序,以便对数据进行 CRUD。

这是我检索我的 DataContext 的方法:

        var datacontext = new CogniTICDataContext(new Uri("http://my.service.url/_vti_bin/listdata.svc"));

        datacontext.IgnoreResourceNotFoundException = true;
        datacontext.Credentials = new NetworkCredential("user", "pass", "Domain");

        datacontext.MergeOption = MergeOption.OverwriteChanges;

        return datacontext;

它与单个和多个查找字段完美配合。但是对于多选字段,没有任何效果。

这是我正在尝试的:

           foreach (string domComp in jsonDomComp.Split(';'))
                {
                    PrestatairesFormationsDomaineDeCompétencesValue domaineDeCompetence =
                        PrestatairesFormationsDomaineDeCompétencesValue
                            .CreatePrestatairesFormationsDomaineDeCompétencesValue(domComp);
                    prestataire.DomaineDeCompétences.Add(domaineDeCompetence);

                    //dc.AttachTo("DomainesDeCompétence", domaineDeCompetence);
                    //dc.AddLink(prestataire, "DomComp", domaineDeCompetence);
                }
            //SaveChanges in batch mode
            dc.UpdateObject(prestataire);
            dc.SaveChanges(System.Data.Services.Client.SaveChangesOptions.Batch);

我评论了 AttachTo 和 AddLink 因为我的“DomaineDeCompétences”不是实体!这不是一个多查找字段,我无权改变它。但是,如果我尝试添加这两行,我有一个 ResourceNotFoundException 因为实体没有 id,那是因为它不是实体!(我已经尝试过:dc.IgnoreResourceNotFoundException = true;)

我没有错误,它只是不起作用......有人可以帮助我吗?

最好的问候, 弗拉维奥

4

2 回答 2

1

而不是使用

prestataire.DomaineDeCompétences = ...

只需使用

prestataire.DomaineDeCompétencesValue = domComp 

在那里你可以直接分配字符串。

于 2016-04-25T12:03:10.547 回答
-2

请在 SO 上查看类似的问题

SP 2013 - 通过 REST API 更新多值查找字段

使用 REST API 更新查找值

也可以:

MyListService.Credentials = CredentialCache.DefaultCredentials;
MyListService.Url = "http://yourserver/_vti_bin/lists.asmx";

XmlDocument updateRequest = new XmlDocument();

String updateBatch = "<Batch OnError='Continue'>" +
                        "<Method ID='1' Cmd='Update'>" +
                        "<Field Name='ID'>2</Field>" +
                        "<Field Name='Location'>1;#;#2</Field>" +
                        "<Field Name='Owners'>1;#;#7</Field>" +
                        "<Field Name='Choices'>Value1;#Value2</Field>" +
                        "</Method>" +
                        "</Batch>";

updateRequest.LoadXml(updateBatch);

XmlNode deleteResult = MyListService.UpdateListItems("Tasks", updateRequest.DocumentElement);
于 2015-10-09T12:43:04.210 回答