事件接收器的最佳做法
2014-03-25 21:41
302 查看
转:http://msdn.microsoft.com/zh-cn/library/ee724407(v=office.14).aspx
在事件接收器中使用对象
不要在事件接收器内实例化 SPWeb、SPSite、SPList 或
SPListItem 对象。实例化这些对象而非使用通过事件属性传递的实例的事件接收器可能会导致以下问题:
大量额外的数据库往返(一次写入操作会导致在每个事件接收器中出现多达 5 次的额外往返)。
对这些实例调用 Update 方法会导致在其他注册的事件接收器中的后续
Update 调用失败。
不良的编码实践
在事件接收器内安装一个 SPSite 对象
C#
VB
复制
良好的编码实践
使用 SPItemEventProperties
C#
VB
复制
如果不从 SPItemEventProperties 中检索 SPWeb、SPSite、SPList 或
SPListItem 对象,而是在一个事件接收器中实例化这些对象,当对这些新实例调用
Update 时,则必须使用 SPEventPropertiesBase 的适当子类(例如
SPItemEventProperties.InvalidateListItem 或
SPItemEventProperties.InvalidateWeb)中的
Invalidate 方法清除它。
在事件接收器中使用对象
不要在事件接收器内实例化 SPWeb、SPSite、SPList 或
SPListItem 对象。实例化这些对象而非使用通过事件属性传递的实例的事件接收器可能会导致以下问题:
大量额外的数据库往返(一次写入操作会导致在每个事件接收器中出现多达 5 次的额外往返)。
对这些实例调用 Update 方法会导致在其他注册的事件接收器中的后续
Update 调用失败。
不良的编码实践
在事件接收器内安装一个 SPSite 对象
C#
VB
复制
public override void ItemDeleting(SPItemEventProperties properties) { using (SPSite site = new SPSite(properties.WebUrl)) { using (SPWeb web = site.OpenWeb()) { SPList list = web.Lists[properties.ListId]; SPListItem item = list.GetItemByUniqueId(properties.ListItemId); // Operate on an item. } } }
良好的编码实践
使用 SPItemEventProperties
C#
VB
复制
// Retrieve SPWeb and SPListItem from SPItemEventProperties instead of // from a new instance of SPSite. SPWeb web = properties.OpenWeb(); // Operate on the SPWeb object. SPListItem item = properties.ListItem; // Operate on an item.
如果不从 SPItemEventProperties 中检索 SPWeb、SPSite、SPList 或
SPListItem 对象,而是在一个事件接收器中实例化这些对象,当对这些新实例调用
Update 时,则必须使用 SPEventPropertiesBase 的适当子类(例如
SPItemEventProperties.InvalidateListItem 或
SPItemEventProperties.InvalidateWeb)中的
Invalidate 方法清除它。
相关文章推荐
- SharePoint2010企业开发最佳实践(九)---- 事件接收器的最佳做法
- 事件接收器的最佳做法
- 实现基于事件的异步模式的最佳做法
- ArcGIS教程:存储时态数据的最佳做法
- 异步代理中的最佳做法
- 异步编程中的最佳做法
- 在 Windows Azure 上设计大型服务的最佳做法
- form的onsubmit事件--表单提交前的验证最佳实现方式
- Win7中多点触控的最佳模型以及处理触控事件的API
- SharePoint 2010 列表项事件接收器 ItemAdded 的使用方法
- 最佳的addEvent事件绑定是怎样诞生的
- 服务器群集:Windows Server 2003 备份和恢复的最佳做法
- 3个 Windows Azure SQL Reporting开发的最佳做法
- SharePoint 2013中的爬网最佳做法
- JQuery最佳实践之精妙的自定义事件
- Flex 最佳做法
- EJB 异常处理的最佳做法
- ITIL执行方案:定义你的最佳做法
- form的onsubmit事件--表单提交前的验证最佳实现方式
- Async/Await 异步编程中的最佳做法