protocol Módulo

Protocolo estructural de DataverseModel para la integración de entidades con tipo.

Clases

DataverseModel

Protocolo estructural que permite pasar instancias de entidad con tipo a records.create() y records.update().

Implemente este protocolo en cualquier clase de entidad (dataclass, modelo Pydantic, inscrito manualmente) para permitir que se pase directamente a operaciones CRUD sin especificar el nombre de la tabla ni convertir en dict manualmente.

Variables de clase necesarias:

  • __entity_logical_name__ : nombre de entidad lógica de Dataverse (por ejemplo, "account")

  • __entity_set_name__ : nombre del conjunto de entidades de OData (por ejemplo, "accounts")

Métodos de instancia necesarios:

  • to_dict() : devuelve la carga del registro como dict

  • from_dict(data) — clasemethod para reconstruir a partir de una respuesta dict

Ejemplo:


   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)

Nota:

Envío directo (client.records.create(entity) sin un nombre de tabla

o dict) aún no se admite y se agregará en una versión futura.