models Csomag

Adatmodellek és típusdefiníciók a Dataverse SDK-hoz.

Adatosztályokat és segédeket biztosít a Dataverse-entitásokhoz:

Modulok

batch

Nyilvános eredménytípusok kötegműveletekhez.

fetchxml_query

FetchXmlQuery – a QueryOperations.fetchxml() által visszaadott inert lekérdezési objektum.

filters

A Dataverse SDK írható OData-szűrőkifejezései.

OData-$filter sztringekre lefordított kifejezésfa, amely Python operátorok túlterhelésével (&, |, ~) teszi lehetővé összetett szűrőfeltételek írását.

Példa::

from PowerPlatform.Dataverse.models.filters import col, raw


# Preferred GA idiom — col() proxy
expr = col("statecode") == 0
print(expr.to_odata())  # statecode eq 0


# Complex composition with OR and AND
expr = (col("statecode") == 0) | (col("statecode") == 1) & (col("revenue") > 100000)
print(expr.to_odata())


# In / not-in
expr = col("statecode").in_([0, 1, 2])
print(expr.to_odata())
# Microsoft.Dynamics.CRM.In(PropertyName='statecode',PropertyValues=["0","1","2"])


# Raw OData escape hatch (no deprecation warning)
expr = raw("Microsoft.Dynamics.CRM.Today(PropertyName='createdon')")


# Negation
expr = ~(col("statecode") == 1)
print(expr.to_odata())  # not (statecode eq 1)
labels

A Dataverse metaadatainak címkézési modelljei.

protocol

DataverseModel structural Protocol a gépelt entitásintegrációhoz.

query_builder

Fluent query builder oData-lekérdezések készítéséhez.

Típusbiztos, felderíthető felületet biztosít a Dataverse-táblákon végzett összetett lekérdezések metódusláncolással történő létrehozásához.

Példa::

# Via client (recommended) -- flat iteration over records
from PowerPlatform.Dataverse.models import col


for record in (client.query.builder("account")
               .select("name", "revenue")
               .where(col("statecode") == 0)
               .where(col("revenue") > 1_000_000)
               .order_by("revenue", descending=True)
               .top(100)
               .execute()):
    print(record["name"])


# With composable expression tree
from PowerPlatform.Dataverse.models import col, raw


for record in (client.query.builder("account")
               .select("name", "revenue")
               .where((col("statecode") == 0) | (col("statecode") == 1))
               .where(col("revenue") > 100000)
               .top(100)
               .execute()):
    print(record["name"])


# Lazy paged iteration (one QueryResult per HTTP page)
for page in (client.query.builder("account")
             .select("name")
             .execute_pages()):
    process_batch(page)


# Get results as a pandas DataFrame
df = (client.query.builder("account")
      .select("name", "telephone1")
      .where(col("statecode") == 0)
      .top(100)
      .execute()
      .to_dataframe())
record

Dataverse-adatok modelljeinek rögzítése.

relationship

A Dataverse kapcsolatmodelljei (bemenet és kimenet).

table_info

A Dataverse tábla- és oszlopmetamodelljei.

upsert

Adatmodellek létrehozása a Dataverse SDK-hoz.

Osztályok

AlternateKeyInfo

Alternatív kulcs metaadatai egy Dataverse-tábla esetében.

BatchItemResponse

Egyetlen művelet válasza egy kötegkérelemen belül.

A válaszok beküldési sorrendben jelennek meg. A változáskészlethez hozzáadott műveletek esetében a válaszok a változáskészlet pozíciójában jelennek meg ebben a sorrendben.

Example:


   for item in result.responses:
       if item.is_success:
           print(f"[OK] {item.status_code} entity_id={item.entity_id}")
       else:
           print(f"[ERR] {item.status_code}: {item.error_message}")
BatchResult

Batch-kérés végrehajtásának eredménye.

Http-műveletenként egy BatchItemResponse elküldött műveletet tartalmaz. A több HTTP-kérésre (például add_columns három oszlopra) kiterjesztő műveletek három bejegyzést adnak hozzá.

Example:


   result = client.batch.new().execute()
   print(f"Succeeded: {len(result.succeeded)}, Failed: {len(result.failed)}")
   for guid in result.entity_ids:
       print(f"[OK] entity_id: {guid}")
CascadeConfiguration

Kaszkádolt viselkedést határoz meg a kapcsolati műveletekhez.

Az egyes paraméterek érvényes értékei:

  • "Kaszkád": A művelet végrehajtása az összes kapcsolódó rekordon

  • "NoCascade": Ne hajtsa végre a műveletet a kapcsolódó rekordokon

  • "RemoveLink": Távolítsa el a kapcsolati hivatkozást, de tartsa meg a rekordokat

  • "Korlátozás": A művelet megakadályozása kapcsolódó rekordok esetén

ColumnInfo

Oszlop metaadatai dataverse tábladefinícióból.

ColumnProxy

Fluent proxy OData-szűrőkifejezések oszlopnévből való létrehozásához.

Visszaadta: col. Az operátorok túlterhelései és metódusai olyan példányokat hoznak létre FilterExpression , amelyek átadhatók a rendszernek QueryBuilder.where().

Example:


   from PowerPlatform.Dataverse.models.filters import col

   expr = col("statecode") == 0               # equality
   expr = col("revenue") > 1_000_000          # comparison
   expr = col("name").like("Contoso%")        # startswith
   expr = col("name").is_null()               # null check
   expr = col("statecode").in_([0, 1])        # in
DataverseModel

Szerkezeti protokoll, amely lehetővé teszi a gépelt entitáspéldányok átadását és records.create()records.update()a .

Implementálja ezt a protokollt bármely entitásosztályon (dataclass, Pydantic model, kézzel hengerelt), hogy közvetlenül a CRUD-műveleteknek átadhassa a táblanév megadása vagy a diktálás manuális konvertálása nélkül.

Kötelező osztályváltozók:

  • __entity_logical_name__ — Dataverse logikai entitás neve (pl. "account")

  • __entity_set_name__ — OData entitáskészlet neve (pl. "accounts")

Szükséges példánymódszerek:

  • to_dict() — a rekord hasznos adatait adja vissza a dict

  • from_dict(data) — osztálymethod rekonstruálása válaszból 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)

Megjegyzés:

Közvetlen küldés (client.records.create(entitás) táblanév nélkül

vagy a dict) még nem támogatott, és egy későbbi kiadásban lesz hozzáadva.

ExpandOption

Navigációs tulajdonság strukturált $expand beállításai.

Az OData $expand szintaxist követve lehetővé teszi a beágyazott$select, $filtera , $orderbyés $top a beállítások megadását egyetlen navigációs tulajdonságbővítéshez.

Example:


   # Expand Account_Tasks with nested options
   opt = (ExpandOption("Account_Tasks")
          .select("subject", "createdon")
          .filter("contains(subject,'Task')")
          .order_by("createdon", descending=True)
          .top(5))

   query = (client.query.builder("account")
            .select("name")
            .expand(opt)
            .execute())
FetchXmlQuery

Inert FetchXML lekérdezési objektum. A http-kérések nem lesznek megadva, amíg meg nem hívják vagy execute_pages meg execute nem hívják.

A lekért adatok client.query.fetchxml(xml): .

FilterExpression

Alaposztály írható OData-szűrőkifejezésekhez.

Támogatja Python operátorok túlterhelését a logikai összetételhez:

  • expr1 & expr2 Termel (expr1 and expr2)

  • expr1 | expr2 Termel (expr1 or expr2)

  • ~expr Termel not (expr)

Label

Olyan címkét jelöl, amely több honosított verzióval rendelkezhet.

LocalizedLabel

Nyelvi kóddal ellátott honosított címkét jelöl.

LookupAttributeMetadata

Keresési attribútum metaadatai.

Érvényes required_level értékek:

  • "Nincs": Az attribútum nem kötelező

  • "Ajánlott": Az attribútum használata javasolt

  • "ApplicationRequired": Az attribútum megadása kötelező

ManyToManyRelationshipMetadata

Több-a-többhöz entitáskapcsolat metaadatai.

OneToManyRelationshipMetadata

Egy-a-többhöz entitáskapcsolat metaadatai.

QueryBuilder

Fluent felület OData-lekérdezések szinkronizálási ügyfélen történő létrehozásához és végrehajtásához.

Metódusláncolást biztosít összetett lekérdezések összeállításához összeállítható szűrőkifejezésekkel. Használható önállóan (keresztül build()) vagy ügyfélhez kötve (keresztül execute).

QueryParams

A függvény által QueryBuilder.build()visszaadott gépelt szótár.

Ide automatikus kiegészítést biztosít, amikor manuálisan adja át a builderedményeket client.records.list() .

QueryResult

Iterable burkoló az objektumok listája Record körül.

A visszaadott érték execute (sík mód) és list.

Visszamenőlegesen kompatibilis: for r in result változatlanul működik.

RelationshipInfo

A kapcsolat metaadatainak beírt visszatérési modellje.

A visszaadott érték: create_one_to_many_relationship, create_many_to_many_relationship, get_relationshipés create_lookup_field.

Example:


   result = client.tables.create_one_to_many_relationship(lookup, relationship)
   print(result.relationship_schema_name)
   print(result.lookup_schema_name)
TableInfo

Tábla metaadatai diktálásszerű visszamenőleges kompatibilitással.

Támogatja az új attribútumhozzáférést (info.schema_name) és az örökölt diktáláskulcs-hozzáférést (info["table_schema_name"]) a nyers dict API-n írt kóddal való visszamenőleges kompatibilitás érdekében.

Example:


   info = client.tables.create("new_Product", {"new_Price": "decimal"})
   print(info.schema_name)              # new attribute access
   print(info["table_schema_name"])     # legacy dict-key access
UpsertItem

Egyetlen upsert műveletet jelöl, amely egy rekordot a másodlagos kulccsal céloz meg.

Egy vagy több, másodlagos kulcsok által azonosított rekord frissítésére upsert szolgál az elsődleges GRAFIKUS AZONOSÍTÓk helyett.

Example:


   item = UpsertItem(
       alternate_key={"accountnumber": "ACC-001", "address1_postalcode": "98052"},
       record={"name": "Contoso Ltd", "telephone1": "555-0100"},
   )

Függvények

col

Szűrőkifejezések létrehozásához ad vissza egy ColumnProxy értéket.

Ez az előnyben részesített ga-kifejezés a szűrőkifejezések létrehozására:


   from PowerPlatform.Dataverse.models.filters import col

   expr = col("statecode") == 0
   expr = col("revenue") > 1_000_000
   expr = col("name").like("Contoso%")
   expr = col("statecode").in_([0, 1])
   expr = col("parentaccountid").is_null()
col(name: str) -> ColumnProxy

Paraméterek

Name Description
name
Kötelező

Az oszlop logikai neve (a kis- és nagybetűk megkülönböztetése kisbetűs lesz).

Válaszok

Típus Description

Az ColumnProxy oszlophoz kötött.

Kivételek

Típus Description

Ha name üres.

raw

Verbatim OData szűrőkifejezés (változatlanul átadva).

Ez a függvény nem elavult – ez az OData menekülőnyílás, gépelt csere nélkül.

Example:


   raw("Microsoft.Dynamics.CRM.Today(PropertyName='createdon')")
raw(filter_string: str) -> FilterExpression

Paraméterek

Name Description
filter_string
Kötelező

Nyers OData-szűrősztring.

Válaszok

Típus Description

Egy FilterExpression.