EntityRef <T>Проблемы, не возвращающие значение из списка поиска - PullRequest
1 голос
/ 06 июля 2010

Хорошо, я объясню это настолько, насколько смогу ...

У меня есть столбец поиска сайтов с именем 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 соответствовать значению коллекции в классе или оно ссылается на фактическое имя списка поиска?

1 Ответ

2 голосов
/ 07 июля 2010

Понял ...

Глупо с моей стороны "предполагать" при создании столбцов поиска по сайту с помощью кода, что SharePoint будет использовать надлежащие соглашения об именах для FieldNames с пробелами.

Так чтоfieldName было правильным, его InternalName было не тем, которое я ожидал.И поскольку sharepoint linq требует внутренних имен, он выдавал внутренние исключения в DLL Linq.SharePoint.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...