Microsoft.Graph API устанавливает свойство расширения пользователя

Некоторое время мы использовали API Microsoft Graph для установки значения расширенного свойства. Раньше мы использовали Microsoft.Azure.ActiveDirectory.GraphClient, но с года появился пакет Microsoft.Graph Nuget. В Microsoft.Azure.ActiveDirectory.GraphClient был метод SetExtendedProperty, но в пакете Microsoft.Graph такого нет. У кого-нибудь есть предложение, как установить свойство расширения с пакетом Microsoft.Graph?

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать!


person FerronSwitch    schedule 21.06.2017    source источник


Ответы (1)


Вы можете создать расширения схемы с помощью Microsoft Graph SDK версии 1.4.0. Связанное обсуждение и пример кода здесь и здесь приведены для справки.

Например, чтобы создать расширение схемы для групп:

// Create a schema extension for groups.
SchemaExtension extensionDefinition = new SchemaExtension()
{
    Description = "This extension correlates a group with a foreign database.",
    Id = $"crmForeignKey", // Microsoft Graph will prepend 8 chars
    Properties = new List<ExtensionSchemaProperty>()
    {
        new ExtensionSchemaProperty() { Name = "fid", Type = "Integer" }
    },
    TargetTypes = new List<string>()
    {
        "Group"
    }
};

// Create the schema extension. This results in a call to Microsoft Graph.
SchemaExtension schemaExtension = await graphClient.SchemaExtensions.Request().AddAsync(extensionDefinition);

Затем создайте класс для расширения:

[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
public class MyDBExtensionClass
{
    [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "fid", Required = Newtonsoft.Json.Required.Default)]
    public int FID { get; set; }

    public MyDBExtensionClass(int fid)
    {
        FID = fid;
    }
}

Затем установите свойства расширения схемы для существующей группы, обновив свойство AdditionalData группы:

        // Update a group.
        // This snippet changes the group name. 
        // This snippet requires an admin work account. 
        public async Task<List<ResultsItem>> UpdateGroup(GraphServiceClient graphClient, string id, string name)
        {
            List<ResultsItem> items = new List<ResultsItem>();
            IDictionary<string, object> extensionInstance = new Dictionary<string, object>();
            extensionInstance.Add(extensionIDYouGet, new MyDBExtensionClass(1213));
            // Update the group.
            await graphClient.Groups[id].Request().UpdateAsync(new Group
            {
                DisplayName = Resource.Updated + name,
                AdditionalData= extensionInstance
            });

            items.Add(new ResultsItem
            {

                // This operation doesn't return anything.
                Properties = new Dictionary<string, object>
                {
                    { Resource.No_Return_Data, "" }
                }
            });
            return items;
        }

Вы также можете добавить расширение в новую группу создания, как показано по ссылке выше.

Обновлять :

Ваше требование - установить свойства расширения схемы для пользователя, а затем обновить свойство AdditionalData пользователя:

  await graphClient.Users["ID"].Request().UpdateAsync(new User
            {
                DisplayName = Resource.Updated + name,
                AdditionalData = extensionInstance

            });

И если вы хотите создать расширение схемы для объекта пользователя, Uservalue должно быть включено в свойство TargetTypes объекта SchemaExtension.

person Nan Yu    schedule 23.06.2017