2010-03-08 67 views
2

我希望SharePoint爲「堅持」對象的名單SPPersistedObject和列表<T>

我寫了從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; 
} 

的問題是:

當我打電話ŸMyCustomJob的更新方法

myCustomJob.Update(); 

它拋出一個異常:

消息:

中的SharePoint 管理框架的對象,取決於其他 對象哪些不存在。 確保創建所有對象 依賴關係並重試 此操作。

在 Microsoft.SharePoint.Administration.SPConfigurationDatabase.StoreObject(SPPersistedObject OBJ,布爾storeClassIfNecessary, 布爾確保)在 Microsoft.SharePoint.Administration.SPConfigurationDatabase.PutObject(SPPersistedObject obj,Boolean確保)在 Microsoft.SharePoint.Administration.SPPersistedObject.Update() at Microsoft.SharePoint.Administration.SPJobDefinition .Update() 在 Sigi.Common.AlertBySMS.SmsAlertHandler.ScheduleJob(的SPWeb 網,SPAlertHandlerParams AHP)

內部異常

中的SharePoint 管理框架對象取決於 其他不存在的對象。

INSERT語句與 FOREIGN KEY約束 「FK_Dependencies1_Objects」衝突。

衝突發生於數據庫 「SharePoint_Config,表 「dbo.Objects」,列 'ID',該 語句已終止。

誰能幫我與??

+0

你解決這個問題? – Mauro 2010-11-01 11:06:34

回答

1

您是否指定了SMSAlert的默認構造函數?

+0

不,我沒有這樣做 所以我加了它,我沒有任何異常 但是當我檢索我的「MyCustomJob」時,列表中有很多項目,但是每個項目都是空的 – Sam 2010-03-09 09:39:54

2

確保您的類使用[System.Runtime.InteropServices。Guid(「GUID」)]並確保持久化對象的類具有默認構造函數。希望這個幫助。

2

以上建議都非常重要,添加一個Guid屬性並確保您有一個默認構造函數。不僅對於你堅持不懈的SMSAlert對象,還要確保你的SPJobDefinition也有這些。

此外,如果創建SPPersistedObject的集合,則必須確保集合中的每個對象都已更新。更好的選擇是使SMSAlert成爲SPAutoSerializingObject。顧名思義,SPAutoSerializingObject的集合會自動序列化。

欲瞭解更多關於持久對象看到這個非常有用的帖子: http://www.chaholl.com/archive/2011/01/30/the-skinny-on-sppersistedobject-and-the-hierarchical-object-store-in.aspx

相關問題