【问题标题】:Dynamics CRM 2011 how can I set the string field to be unique?Dynamics CRM 2011 如何将字符串字段设置为唯一?
【发布时间】:2011-12-13 22:34:48
【问题描述】:

我想向我的自定义实体添加一个“单行文本”字段,该字段应该是唯一的。 当我尝试创建重复值时,如何让 Crm 抛出异常 记录?

【问题讨论】:

    标签: dynamics-crm-2011 microsoft-dynamics


    【解决方案1】:

    据我所知,您无法通过配置来做到这一点。

    您需要使用一些客户端代码来查询该字段的现有值,以查看新输入的值是否唯一。您可以使用 jQuery 和 CRM REST 服务 (ODATA) 之类的工具在字段上执行异步验证;虽然它可能不是即时的,但您可能需要考虑如何将其呈现给用户。

    或者,您可以使用工作流来执行此操作,但这会更不及时 - 它可能必须在保存后触发。

    【讨论】:

      【解决方案2】:

      您必须为此要求创建一个插件,以处理此实体的预创建/预更新步骤。在此插件中,您必须检查传递的值是否唯一。如果不是,则抛出异常,取消操作并向用户显示对话框(如果插件同步运行)。

      throw new InvalidPluginExecutionException("Value passed for 'attribute' is not unique.");
      

      【讨论】:

      • 这就是我要做的。在任何情况下我都不会做 SQL 索引的想法。
      【解决方案3】:

      另一种选择是直接在数据库中创建唯一的 SQL 索引。

      【讨论】:

      • SDK 不支持,应该避免。
      • 实际上添加索引只是他支持对数据库的修改之一:)
      • 你说得对,支持索引。我脑子里放了个屁,把你的解决方案解释为一个约束。围绕索引“支持”的文档没有指定任何限制,所以我猜想支持唯一索引 - 不过我不会这样做。我认为支持索引的意图是为了提高读取性能,而不是因为记录不是唯一的而导致写入操作失败。无论如何,投票支持你;-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-03
      • 2012-04-25
      • 1970-01-01
      • 2012-01-04
      • 2020-08-22
      • 1970-01-01
      相关资源
      最近更新 更多