Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sharepoint SPPersistedObject和List_Sharepoint_List_Persistence - Fatal编程技术网

Sharepoint SPPersistedObject和List

Sharepoint SPPersistedObject和List,sharepoint,list,persistence,Sharepoint,List,Persistence,我希望sharepoint持久化对象列表 我编写了一个从SPPersistedObject继承的类SPAlert: public class SMSAlert: SPPersistedObject { [Persisted] private DateTime _scheduledTime; [Persisted] private Guid _listId; [Persisted] private G

我希望sharepoint持久化对象列表

我编写了一个从SPPersistedObject继承的类SPAlert:

public class SMSAlert: SPPersistedObject
{
        [Persisted]
        private DateTime _scheduledTime;

        [Persisted]
        private Guid _listId;
        [Persisted]
        private Guid _siteID;
}
然后我编写了一个类,该类继承自SPJobDefinition,并添加了我以前的对象的列表:

public sealed class MyCustomJob: SPJobDefinition
{


        [Persisted]
        private List<SMSAlert> _SMSAlerts;
}
它会引发一个异常:

信息:

SharePoint中的对象 行政框架,取决于 其他不存在的对象。 确保所有对象 将创建依赖项并重试 这次手术

堆叠

在 Microsoft.SharePoint.Administration.SPConfigurationDatabase.StoreObjectsPersistedObject obj,布尔存储类必需, 布尔确保在 Microsoft.SharePoint.Administration.SPConfigurationDatabase.PutObjectsPersistedObject obj,布尔确保在 Microsoft.SharePoint.Administration.SPPersistedObject.Update 在 Microsoft.SharePoint.Administration.SPJobDefinition.Update 在 Sigi.Common.AlertBySMS.smsalerhandler.ScheduleJobSPWeb web,SPAlertHandlerParams ahp

内部异常

SharePoint中的对象 行政框架取决于 其他不存在的对象

INSERT语句与冲突 外键约束 FK_依赖关系1_对象

数据库中发生冲突 SharePoint_配置,表 对象,列“Id”。这个 声明已终止


有人能帮我吗

是否为SMSAlert指定了默认构造函数?

确保使用[System.Runtime.InteropServices.GuidGUID]为类标记唯一的GUID,并确保持久化对象的类具有默认构造函数。希望对您有所帮助。

以上两个建议都非常重要,添加了Guid属性并确保您拥有默认构造函数。不仅针对持久化的SMSAlert对象,还要确保SPJobDefinition中也包含这些对象

此外,如果创建SPPersistedObject的集合,则必须确保集合中的每个对象都已更新。更好的替代方法是将SMSAlert设置为SpautoSerializengObject。SPAutoSerializingObject的集合,顾名思义,是自动序列化的

有关持久化对象的更多信息,请参阅这篇非常有用的文章:

不,我没有这样做,所以我添加了它,我不再有例外,但当我检索我的自定义作业时,列表中的项目数量很好,但每个项目都为空
myCustomJob.Update();