protocol Module

DataverseModel structural Protocol pour l’intégration d’entités typées.

Classes

DataverseModel

Protocole structurel permettant aux instances d’entité typées d’être passées à records.create() et records.update().

Implémentez ce protocole sur n’importe quelle classe d’entité (dataclass, modèle Pydantic, roulé manuellement) pour lui permettre d’être transmis directement aux opérations CRUD sans spécifier le nom de la table ou convertir manuellement en dict.

Variables de classe requises :

  • __entity_logical_name__ — Nom d’entité logique Dataverse (par exemple "account")

  • __entity_set_name__ — Nom du jeu d’entités OData (par exemple "accounts")

Méthodes d’instance requises :

  • to_dict() — retourner une charge utile d’enregistrement en tant que dict

  • from_dict(data) — classmethod à reconstruire à partir d’une réponse dict

Exemple :


   from dataclasses import dataclass
   from PowerPlatform.Dataverse import DataverseModel

   @dataclass
   class Account:
       __entity_logical_name__ = "account"
       __entity_set_name__ = "accounts"
       name: str = ""
       telephone1: str = ""

       def to_dict(self) -> dict:
           return {"name": self.name, "telephone1": self.telephone1}

       @classmethod
       def from_dict(cls, data: dict) -> "Account":
           return cls(
               name=data.get("name", ""),
               telephone1=data.get("telephone1", ""),
           )

   # isinstance() works today — Protocol is runtime_checkable:
   assert isinstance(Account(), DataverseModel)

   # Type your own helpers against the Protocol now:
   def save(entity: DataverseModel) -> None:
       data = entity.to_dict()
       client.records.create(entity.__entity_logical_name__, data)

Note

Distribution directe (client.records.create(entity) sans nom de table

ou dict) n’est pas encore pris en charge et sera ajouté dans une version ultérieure.