У меня была такая же проблема, и вот что я сделал:
Сгенерируйте код с помощью SPMetal (с приложенным рабочим процессом или без него: не имеет значения)
Измените сгенерированный код, чтобы изменить тип поля, представляющего столбец состояния рабочего процесса, из списка на объект. В моем случае измененный код выглядит так:
[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
}
}
- Компиляция и развертывание.
Ошибка «указанный приведен ..» больше не должна возникать.
Причина этого в том, что (я полагаю) SPMetal имеет ошибку и генерирует поля типа System.Nullable в сгенерированном коде для представления столбцов состояния рабочего процесса. Я проверил код для Microsoft.Sharepoint.Linq.dll в Reflector, чтобы обнаружить, что он использует динамически сгенерированный метод для прямой установки значения поля и непосредственно перед установкой поля он пытается преобразовать значение из объекта в любой тип поля есть.
MSDN указывает, что тип сопоставления для типа «WorkflowStatus» в Sharepoint - это «объект» в .NET: http://msdn.microsoft.com/en-us/library/ee536245.aspx
Теперь, по крайней мере, я больше не получаю эту ошибку.