通过odata更新sharepoint项目多查找字段

时间:2013-03-14 15:53:33

标签: sharepoint odata

我需要一些帮助来整理一些语法,以便从应用程序更新sharepoint中的列表项。以下是有关情况的简要说明:

此sp网站中有两个列表。一个列表是产品列表,第二个列表是定价。然而,这些列表的设置方式是1对多方案。一种产品可以有很多定价记录。然后,该产品有一个列,它是一个支持多个值的查找字段。

使用REST和oData我现在可以轻松地查询和获取定价信息,但我的问题是当我需要更新产品记录以增加价格时。

使用常规查找字段我通常只设置对象的ID属性,然后调用该列表的update和savechanges方法。由于定价列支持多个记录,因此无需设置ID,该字段是各种类型的数组。添加定价对象(列表项)以及更新和保存更改实际上并不保存。没有错误被抛出但是当查看列表时它实际上并没有保存。

如何为我的产品添加价格查询?

我写了一个小方法来查询每个价格,并将其初始价格添加到下面的产品中进行测试:

InventoryCatalogDataContext dc = new InventoryCatalogDataContext(_pushinTinSvc);
        dc.Credentials = CredentialCache.DefaultCredentials;

        List<PricingItem> pricing = (from q in dc.Pricing
                                     select q).ToList<PricingItem>();

        foreach (PricingItem price in pricing)
        {                
            var query = (DataServiceQuery<ProductsItem>)
                        dc.Products
                        .Expand("Pricing")
                        .Where(p => p.Id.Equals(price.StockCodeId));


            List<ProductsItem> prods = query.ToList<ProductsItem>();
            ProductsItem product = prods[0];

            product.Pricing.Add(price);
            dc.UpdateObject(product);
        }

        try
        {
            dc.SaveChanges();
        }
        catch (Exception ex)
        {
            string stopHere = ex.Message;
        }

我不确定我做错了什么或者这是一个错误。如果我在SaveChanges之后检查项目,该项目仍然附加了定价项目查找,显示计数为1.在代码块结束时,如果我重新查询产品,那么它甚至还有定价附加。但是一旦方法完成并返回到UI,就不再附加定价,当您查看sharepoint中的列表时,字段为空,但版本确实增加了。所以我有点失落......

0 个答案:

没有答案