Как обнаружить повторяющуюся запись в CRM 2013 при создании (предварительной проверки) плагина

Я пишу плагин, который будет обнаруживать повторяющийся идентификатор при создании и ограничивать пользователя вместо ввода нового идентификатора. ПРИМЕЧАНИЕ. Я НЕ МОГУ ИСПОЛЬЗОВАТЬ МЕТОДЫ ДУБЛИРОВАНИЯ ПО УМОЛЧАНИЮ, ПРЕДОСТАВЛЯЕМЫЕ 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());
                    }

Теперь проблема, с которой я сталкиваюсь, находится в этой строке

если (entity.Attributes.Contains("new_studentid") == "Что-то")

как я могу получить значение, введенное пользователем в crm, и сравнить его с моими существующими записями?


person Waqar ul islam    schedule 20.02.2015    source источник


Ответы (1)


Вам необходимо получить объект из контекста подключаемого модуля, как описано в документации. :

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");
}
person rocky    schedule 20.02.2015
comment
Это только первая часть. Другой — это RetrieveMultiple, запрашивающий условие, и если он получает записи, то он дублируется. - person Sxntk; 20.02.2015
comment
var требуемое значение = сущность.GetAttributeValue‹желаемый тип›(желаемое поле); Эта конкретная строка поможет мне получить значение, введенное пользователем? а как насчет получения мультипликатора? - person Waqar ul islam; 23.02.2015
comment
Да, если вы зарегистрируете свой плагин как пост-операцию, он наверняка будет содержать значение, введенное пользователем. msdn.microsoft.com/en-us/library/gg327941.aspx - person rocky; 23.02.2015