Невозможно получить элемент списка Sharepoint с прикрепленным к нему рабочим процессом (выполняется, завершен и т. Д.) - PullRequest
0 голосов
/ 01 декабря 2010

Я использую share point 2010 и использую LINQ, который генерируется SPMETAL.EXE. Я сталкиваюсь со странной проблемой, которая упоминается ниже в следующей последовательности:

1: вставлен новый элемент (XX) в список (имя списка) 2: При вставке запускается рабочий процесс, и состояние элемента (XX) становится «Выполняется» в окне ВСЕ элементы. 3: если я получаю доступ к этой строке с помощью LINQ, выдается исключение «указанное приведение недействительно» [NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта.] Microsoft.Office.Server.WebControls.MetaDataNavTree.OnUnload (EventArgs e) +40 System.Web.UI.Control.UnloadRecursive (логическое удаление) +153 System.Web.UI.Control.UnloadRecursive (логическое удаление) +306 System.Web.UI.Control.UnloadRecursive (логическое удаление) +306 System.Web.UI.Control.UnloadRecursive (логическое удаление) +306 System.Web.UI.Control.UnloadRecursive (логическое удаление) +306 System.Web.UI.Control.UnloadRecursive (логическое удаление) +306 System.Web.UI.Control.UnloadRecursive (логическое удаление) +306 System.Web.UI.Control.UnloadRecursive (логическое удаление) +306 System.Web.UI.Control.UnloadRecursive (логическое удаление) +306 System.Web.UI.Control.UnloadRecursive (логическое удаление) +306 System.Web.UI.Page.UnloadRecursive (логическое удаление) +23 System.Web.UI.Page.ProcessRequestCleanup () +54 System.Web.UI.Page.ProcessRequest (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint) +11045194 System.Web.UI.Page.ProcessRequest () +91 System.Web.UI.Page.ProcessRequest (контекст HttpContext) +240 ASP.FORM_ASPX__331913002.ProcessRequest (контекст HttpContext) в c: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Временные файлы ASP.NET \ root \ ccd70a06 \ 451bebbc \ App_Web_form.aspx_-331913002.nurxfpml 0. System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +599 System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логическое и завершено синхронно) + 171

4: При доступе к элементам, для которых их нет, для рабочего процесса (т. Е. Когда я не запускал рабочий процесс из настроек рабочего процесса), он работает нормально.

ВЫШЕУКАЗАННЫЙ ПРОБЛЕМА НЕ С ПОДХОДОМ МОДЕЛИ ОБЪЕКТА. Это работает прекрасно. Я думаю, что проблема с LINQ

ПОЖАЛУЙСТА, ПОМОГИТЕ ПОЛУЧИТЬ ЭТУ ВОПРОС. КАК Я НЕ ХОЧУ ВЫКЛЮЧАТЬСЯ ОТ LINQ.

Ответы [ 2 ]

0 голосов
/ 10 ноября 2014

Вы также можете изменить тип вашей собственности на Объект. Таким образом, вы можете прочитать реальные значения из списка SharePoint. Значения являются Nullable целыми числами, и вы можете найти коды в этом блоге: http://geekswithblogs.net/simonh/archive/2013/04/12/sharepoint-2010-workflow-status-values.aspx

0 голосов
/ 17 мая 2011

У меня была такая же проблема, и вот что я сделал:

  1. Сгенерируйте код с помощью SPMetal (с приложенным рабочим процессом или без него: не имеет значения)

  2. Измените сгенерированный код, чтобы изменить тип поля, представляющего столбец состояния рабочего процесса, из списка на объект. В моем случае измененный код выглядит так:

[System.Runtime.Serialization.DataMemberAttribute ()] закрытый объект _designCompany_SetCompanyAndFullName;

    [Microsoft.SharePoint.Linq.ColumnAttribute(Name = "SetCompa", Storage = "_designCompany_SetCompanyAndFullName", ReadOnly = true, FieldType = "WorkflowStatus")]
    public System.Nullable<int> DesignCompany_SetCompanyAndFullName
    {
        get
        {
            return null; //removed all code - but this may be unnecessary
        }
        set
        {
            //removed all code - but this may be unnecessary
        }
    }
  1. Компиляция и развертывание.

Ошибка «указанный приведен ..» больше не должна возникать.

Причина этого в том, что (я полагаю) SPMetal имеет ошибку и генерирует поля типа System.Nullable в сгенерированном коде для представления столбцов состояния рабочего процесса. Я проверил код для Microsoft.Sharepoint.Linq.dll в Reflector, чтобы обнаружить, что он использует динамически сгенерированный метод для прямой установки значения поля и непосредственно перед установкой поля он пытается преобразовать значение из объекта в любой тип поля есть.

MSDN указывает, что тип сопоставления для типа «WorkflowStatus» в Sharepoint - это «объект» в .NET: http://msdn.microsoft.com/en-us/library/ee536245.aspx

Теперь, по крайней мере, я больше не получаю эту ошибку.

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