protocol Modul

Protokol struktural DataverseModel untuk integrasi entitas yang ditik.

Kelas

DataverseModel

Protokol Struktural yang memungkinkan instans entitas yang ditik untuk diteruskan ke records.create() dan records.update().

Terapkan Protokol ini pada kelas entitas apa pun (kelas data, model Pydantic, hand-rolled) untuk memungkinkannya diteruskan langsung ke operasi CRUD tanpa menentukan nama tabel atau mengonversi ke dict secara manual.

Variabel kelas yang diperlukan:

  • __entity_logical_name__ — Nama entitas logis dataverse (misalnya "account")

  • __entity_set_name__ — Nama set entitas OData (misalnya "accounts")

Metode instans yang diperlukan:

  • to_dict() — mengembalikan payload rekaman sebagai dict

  • from_dict(data) — classmethod untuk rekonstruksi dari respons dict

Example:


   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

Pengiriman langsung (client.records.create(entity) tanpa nama tabel

atau dict) belum didukung dan akan ditambahkan dalam rilis mendatang.