Хорошо, я объясню это настолько, насколько смогу ...
У меня есть столбец поиска сайтов с именем EEE Content Type, который ссылается на список типов типов элементов контента сайта.
Теперь в моем настраиваемом списке (который наследуется от Item) я ссылаюсь на этот столбец, и он появляется в sharepoint fine и отображает значения поиска.
Проблема в том, что я использую SPMetal.exe, чтобы сгенерировать типы, о которых он говорит «Ключ отсутствует в словаре» и завершается неудачно.Поэтому я удаляю определение столбца в файле parameters.xml для SPMetal и заново генерирую классы.
Теперь я вручную добавил свойство и ассоциацию.
private EntityRef<SiteContentItemTypeItem> _eeeContentType;
[Association(Name = "EEE_x0020_Content_x0020_Type", Storage = "_eeeContentType", MultivalueType = AssociationType.Single, List = "Site Content Item Types")]
public SiteContentItemTypeItem EEEContentType
{
get
{
return this._eeeContentType.GetEntity();
}
set
{
this._eeeContentType.SetEntity(value);
}
}
SiteContentItemTypeItem наследуется от Item, поэтому его класс пуст.
Но когда я загружаю созданный мной настраиваемый список, я получаю первую запись, и поле EEEContentType имеет значение null ...
using (IntranetDataContext context = new IntranetDataContext("http://siteurl")) {
context.ObjectTrackingEnabled = false;
EntityList<SiteContentItem> alerts = context.GetList<SiteContentItem>("User Alerts");
SiteContentItem alert = (from tmpalert in alerts where tmpalert.Id == 1 select tmpalert).First();
SiteContentItemTypeItem contentType = alert.EEEContentType;
}
У меня нет идей ...
Должно ли значение List в атрибуте Association соответствовать значению коллекции в классе или оно ссылается на фактическое имя списка поиска?