protocol モジュール

型指定されたエンティティ統合のための DataverseModel 構造プロトコル。

クラス

DataverseModel

型指定されたエンティティ インスタンスを records.create() および records.update()に渡す構造プロトコル。

このプロトコルを任意のエンティティ クラス (dataclass、Pydantic モデル、手動ロール) に実装して、テーブル名を指定したり、手動で dict に変換したりせずに CRUD 操作に直接渡せるようにします。

必要なクラス変数:

  • __entity_logical_name__ — Dataverse 論理エンティティ名 (例: "account")

  • __entity_set_name__ — OData エンティティ セット名 (例: "accounts")

必要なインスタンス メソッド:

  • to_dict() — レコード ペイロードを次のように返します。 dict

  • from_dict(data) — 応答から再構築する classmethod dict

例:


   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

テーブル名のない直接ディスパッチ (client.records.create(entity)

または dict) はまだサポートされていないため、今後のリリースで追加される予定です。