如何检测 CRM 2013 中创建(预验证)插件的重复记录
How to Detect Duplicate record in CRM 2013 on Create (Pre-Validate ) Plugin
我正在编写一个插件,它将在创建时检测重复的 ID,并限制用户输入新的 ID。注意:我不能使用 MICROSOFT DYNAMICS 2013 或 2015 提供的默认复制方法。
这是一个特例。
以下是我的插件代码:
enter code here
if (entity.LogicalName == "new_studentinformation")
{
// An accountnumber attribute should not already exist because
// it is system generated.
if (entity.Attributes.Contains("new_studentid") == false)
{
// Create a new accountnumber attribute, set its value, and add
// the attribute to the entity's attribute collection.
Random rndgen = new Random();
entity.Attributes.Add("new_studentid", rndgen.Next().ToString());
}
现在我面临的问题是在这一行
if (entity.Attributes.Contains("new_studentid") == "Something")
如何获取用户在 crm 中输入的值并将其与我现有的记录进行比较?
您需要按照 documentation:
中所述从插件上下文中检索实体
IPluginExecutionContext context = (IPluginExecutionContext)
serviceProvider.GetService(typeof(IPluginExecutionContext));
// The InputParameters collection contains all the data passed in the message request.
if (context.InputParameters.Contains("Target") &&
context.InputParameters["Target"] is Entity)
{
// Obtain the target entity from the input parameters.
Entity entity = (Entity)context.InputParameters["Target"];
// Your code here...
var desiredValue = entity.GetAttributeValue<desiredtype>("desiredfield");
}
我正在编写一个插件,它将在创建时检测重复的 ID,并限制用户输入新的 ID。注意:我不能使用 MICROSOFT DYNAMICS 2013 或 2015 提供的默认复制方法。 这是一个特例。 以下是我的插件代码:
enter code here
if (entity.LogicalName == "new_studentinformation")
{
// An accountnumber attribute should not already exist because
// it is system generated.
if (entity.Attributes.Contains("new_studentid") == false)
{
// Create a new accountnumber attribute, set its value, and add
// the attribute to the entity's attribute collection.
Random rndgen = new Random();
entity.Attributes.Add("new_studentid", rndgen.Next().ToString());
}
现在我面临的问题是在这一行
if (entity.Attributes.Contains("new_studentid") == "Something")
如何获取用户在 crm 中输入的值并将其与我现有的记录进行比较?
您需要按照 documentation:
中所述从插件上下文中检索实体IPluginExecutionContext context = (IPluginExecutionContext)
serviceProvider.GetService(typeof(IPluginExecutionContext));
// The InputParameters collection contains all the data passed in the message request.
if (context.InputParameters.Contains("Target") &&
context.InputParameters["Target"] is Entity)
{
// Obtain the target entity from the input parameters.
Entity entity = (Entity)context.InputParameters["Target"];
// Your code here...
var desiredValue = entity.GetAttributeValue<desiredtype>("desiredfield");
}