SPMetal не генерирует классы с надлежащими пользовательскими типами. По умолчанию для всего используется значение ‘Item’

#sharepoint-2010

#sharepoint-2010

Вопрос:

Я пытаюсь сгенерировать классы с помощью SPMetal, чтобы использовать SPLINQ. Сгенерировать код не проблема, за исключением того, что свойства введены неправильно.

Это часть кода:

 [Microsoft.SharePoint.Linq.ListAttribute(Name="Actual Purchase Orders")]
public Microsoft.SharePoint.Linq.EntityList<Item> ActualPurchaseOrders {
    get {
        return this.GetList<Item>("Actual Purchase Orders");
    }
}
  

Как вы можете видеть, возвращаемый тип определяется как Microsoft.SharePoint.Linq.EntityList<Item> . Хотя я бы хотел, чтобы это было Microsoft.SharePoint.Linq.EntityList<ActualPurchaseOrder> .
Это тот же случай для всех списков и всех свойств для всего списка. Единственными правильно введенными свойствами являются внутренние свойства sharepoint, такие как Link, Document, HelpFilesDocument и т.д.

Я проверил все параметры списка, такие как типы контента и т.д. Не повезло.

Это просто ошибка в моей версии 14.0.4763.1000?

Приветствуется любая помощь. Приветствия.

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

1. Что вы имеете в виду под «Как вы можете видеть, возвращаемый тип определен как Microsoft. SharePoint.Linq. EntityList. Хотя я бы хотел, чтобы это была Microsoft. SharePoint.Linq. EntityList.» Я не вижу разницы в типах.

2. Спасибо ChristiaanV, я ничего не понял между <> поглощением get. Я избежал этого сейчас.

Ответ №1:

Если ActualPurchaseOrder не является пользовательским типом содержимого, который вы определили, вам придется переопределить инструмент spmetal с помощью XML-файла параметров. (http://msdn.microsoft.com/en-us/library/ee535056.aspx )

Я думаю, что этот пост в блоге даст вам несколько хороших шагов в правильном направлении: http://socialsp.com/2009/12/11/having-fun-with-the-new-linq-to-sharepoint-on-sharepoint-2010-sp2010/

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

1. Спасибо, я был совершенно не осведомлен о пользовательском ContentType

Ответ №2:

 public Microsoft.SharePoint.Linq.EntityList<*> ActualPurchaseOrders {
  

* -> должен быть типом контента для целевого списка, а не Item который является типом контента по умолчанию.

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

1. Как это отвечает на вопрос? Это больше похоже на повторное изложение вопроса. Имейте в виду, показанный код сгенерирован SPMetal, и проблема в том, что сгенерированный код неверен.