среда, 19 мая 2010 г.

SharePoint 2010 CSOM: How to add site columns to content type

Экспериментировал с созданием контентных типов, и наткнулся на необычное, на мой взгляд, поведение Sharepoint Client Object Model.
Вот такой вот код выдает мне ошибку "The collection cannot be modified." (ServerErrorCode=-2146232832) при попытки добавить существующую саитовую колонку к существующему контетному типу.
//WRONG CODE
using (var clientContext = new ClientContext(@"http://SERVER2k10"))
{
 var fld = clientContext.Web.AvailableFields.GetByInternalNameOrTitle("A2");
 var ct = clientContext.Web.AvailableContentTypes.GetById("0x010065CDC89C6F96C040B3B6F0C51E5C7F48");

 var flci = new FieldLinkCreationInformation();
 flci.Field = fld;

 ct.FieldLinks.Add(flci);
 ct.Update(false);
 clientContext.ExecuteQuery();
}

Я уж было забеспокоился, но оказалось что такой код работает:
//TRUE CODE
using (var clientContext = new ClientContext(@"http://SERVER2k10"))
{
 var fld = clientContext.Web.AvailableFields.GetByInternalNameOrTitle("A2");
        var ct = сlientContext.Web.ContentTypes.GetById("0x010065CDC89C6F96C040B3B6F0C51E5C7F48");

 var flci = new FieldLinkCreationInformation();
 flci.Field = fld;

 ct.FieldLinks.Add(flci);
 ct.Update(false);
 clientContext.ExecuteQuery();
}

Т.е. получается что типы полученные через AvailableContentTypes модифицировать нельзя, а полученные через ContentTypes можно. Не очень удобно и логично.

Комментариев нет: