Dela via


Modellering av relationer i Bicep-typer i Microsoft Graph

Microsoft Graph-API:er har två distinkta relationsmodeller:

  1. Relationer mellan entitetstyper: För den här relationstypen tillhandahåller API:et en "länk" mellan två olika typer. Det kanoniska exemplet är a group och dess members. Du kan hantera medlemskap genom att lägga till och ta bort medlemmar (befintliga användare, tjänstens huvudnamn, enheter och grupper) till och från gruppen. För en grupp som innehåller användarmedlemmar tar inte borttagningen av gruppen bort de användare som är medlemmar i gruppen, eftersom grupper och användare har en oberoende livscykel.
  2. Relationer mellan överordnade och underordnade: För den här relationstypen är underordnade resurser "inneslutna" i den överordnade resursen och livscykeln för den underordnade resursen är kopplad till den överordnade resursen. Till exempel federatedIdentityCredentials är en underordnad samling av en application instans. Om programmet tas bort tas även programmets federatedIdentityCredentials bort.

I den här artikeln går vi in på hur båda dessa relationstyper exponeras i Microsoft Graph Bicep-typer och eventuella extra funktioner som Microsoft Graph Bicep-tillägget tillhandahåller.

Relationer mellan entitetstyper

Anmärkning

Såvida inte uttryckligen anges kräver relationsmodelleringsupplevelserna som beskrivs i det här avsnittet användning av Microsoft Graph Bicep-typer version v0.2.0-preview eller senare.

Dessa relationer modelleras med hjälp av typen MicrosoftGraphRelationship . Exemplet visar modellering för en grupps members och owners egenskaper (andra obligatoriska gruppegenskaper visas inte för korthet). Matrisegenskapen relationships innehåller en lista över kanoniska ID:n (primärnyckel-ID) för andra Microsoft Graph-resurser.

resource group 'Microsoft.Graph/groups@v1.0' = {
  members: {
    relationships: [id1, id2, id3]
  }
  owners: {
    relationships: [id4, id5]
  }
}

Att kontrollera relationsbeteenden

Som standardinställning använder alla relationsuppdateringar tilläggssemantik. Lägg till lägger till en relation för varje ID i listan om relationen inte redan finns. Detta speglar det underliggande standardbeteendet för Microsoft Graph API. Alternativt kan du ställa in att en relationsuppdatering använder ersätt som semantik. Funktionen "Ersätt semantik" ersätter fullständigt det som finns i tjänsten med de relationer som anges i Bicep-mallen. I exemplet ersätts gruppens befintliga medlemmar med id1, id2och id3:

resource group 'Microsoft.Graph/groups@v1.0' = {
  members: {
    relationshipSemantics: 'replace'
    relationships: [id1, id2, id3]
  }
  owners: {
    relationships: [id4, id5]
  }
}

Relationsbeteendet kan också anges på mallnivå i -instruktionen extension :

extension graphV1 with {
  relationshipSemantics: 'replace'
}

Detta sätter alla relationer i Bicep-mallen till att använda ersättningssemantik. Det här globala beteendet kan åsidosättas i varje relationsdeklaration.

Microsoft Graph Bicep-tilläggsfunktioner

Med v0.2.0-förhandsversionen samordnar Microsoft Graph Bicep-tillägget ersättningssemantiklogik och tar reda på vilka medlemmar som ska läggas till och ta bort från relationen. Dessutom orkestrerar Microsoft Graph Bicep-tillägget batchbegäranden av relationer för att övervinna Microsoft Graph API-begärandens gränser för både läs- och skrivoperationer.

Relationer mellan förälder och barn

I Bicep kan överordnade och underordnade relationer deklareras på olika sätt i mallfiler. Det vanligaste sättet att deklarera ett överordnat-underordnat förhållande är genom att kapsla in en underordnad resurs under en överordnad resurs. Ett bra exempel på ett inbäddat underobjekt är federerade identitetsuppgifter.