4

私はこれをウェブで4日間探していましたが、コードが機能しない理由はまだわかりません...

データをCRUDするために、sharepoint listDataへのサービス参照を持つASP.NET MVC 4アプリケーションを使用しています。

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);

「DomaineDeCompétences」はエンティティではないため、AttachTo と AddLink にコメントしました。これはマルチ ルックアップ フィールドではなく、それを変更する権限がありません。ただし、これらの 2 行を追加しようとすると、エンティティに ID がなく、エンティティではないため、ResourceNotFoundException が発生します。(私はすでに試しました: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 に答える