【问题标题】:SharePoint: Unique column valuesSharePoint:唯一列值
【发布时间】:2010-03-18 06:40:59
【问题描述】:

我只想在 SharePoin 列表中具有唯一值。为此,我可以使用下面链接中提到的“ItemAdding”事件处理程序。

http://weblogs.asp.net/vikram/archive/2008/12/24/sharepoint-using-event-handler-to-make-a-column-unique.aspx

现在我有一个疑问:假设两个用户同时尝试在列表中添加具有相同列值(需要唯一值)的列表项。两个调用会同时触发 ItemAdding 事件吗?如果是这样,那么列中的两个项目可能具有相同的值。请确认。

【问题讨论】:

  • 好的,在我的应用程序中,我以编程方式在自定义页面中的按钮单击操作上添加列表项。因此,一种可能性是使用锁或互斥锁,这样一次只有一个线程可以创建列表项,并且在创建项目之前我可以检查是否重复。再次在这里我有一个疑问:负载均衡的多服务器场景会发生什么?我的意思是如果两个请求在两个不同的服务器上进行,那么它们可以再次并行执行。有没有什么机制可以实现跨机同步?

标签: sharepoint unique


【解决方案1】:

我认为,这种方法只允许您在列中具有半唯一值。也就是说,如果一切正常,它将是独一无二的。但是,您无法比较同时添加的两个项目的属性(是的,它可能会发生,因为 IIS Web 服务器是多线程的)。因此,您可能会得到重复的值。

一种解决方法 - 也实现一个“ItemAdded”事件处理程序并删除一个新添加的项目,如果它具有与其他一些现有项目相同的属性。当然,这种情况很少发生。

【讨论】:

    【解决方案2】:

    如果您有足够多的并发用户,这可能是个问题,SharePoint 可能不是适合这项工作的工具。如果该值是由用户创建的,那么两个用户同时添加相同值的可能性极小。如果它是自动生成的,您可能应该使用基于 ID 的东西,它已知是唯一的。

    无论如何,如果您担心重复的可能性,只要确保在最终出现重复导致问题时可以编辑该字段。

    【讨论】:

      猜你喜欢
      • 2021-09-28
      • 2015-11-28
      • 1970-01-01
      • 2016-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-15
      • 2012-01-15
      相关资源
      最近更新 更多