models Paket

Datamodeller och typdefinitioner för Dataverse SDK.

Tillhandahåller dataklasser och hjälp för Dataverse-entiteter:

Moduler

batch

Offentliga resultattyper för batchåtgärder.

fetchxml_query

FetchXmlQuery – inert-frågeobjekt som returneras av QueryOperations.fetchxml().

filters

Skrivbara OData-filteruttryck för Dataverse SDK.

Tillhandahåller ett uttrycksträd som kompileras till OData $filter strängar, med Python operatoröverlagringar (&, |, ~) för att skapa komplexa filtervillkor.

Exempel::

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

Etikettmodeller för Dataverse-metadata.

protocol

DataverseModel strukturellt protokoll för typad entitetsintegrering.

query_builder

Fluent-frågeverktyget för att konstruera OData-frågor.

Tillhandahåller ett typsäkert, identifierbart gränssnitt för att skapa komplexa frågor mot Dataverse-tabeller med metodlänkning.

Exempel::

# 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

Registrera modeller för Dataverse-data.

relationship

Relationsmodeller för Dataverse (indata och utdata).

table_info

Tabell- och kolumnmetadatamodeller för Dataverse.

upsert

Upsert-datamodeller för Dataverse SDK.

Klasser

AlternateKeyInfo

Alternativa nyckelmetadata för en Dataverse-tabell.

BatchItemResponse

Svar från en enskild åtgärd i en batchbegäran.

Svar returneras i sändningsordning. För åtgärder som läggs till i en ändringsuppsättning visas svar i ändringsuppsättningens position i den ordningen.

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

Resultatet av att köra en batchbegäran.

Innehåller en BatchItemResponse per HTTP-åtgärd som skickats. Åtgärder som expanderar till flera HTTP-begäranden (t.ex. add_columns med tre kolumner) bidrar med tre poster.

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

Definierar kaskadbeteende för relationsåtgärder.

Giltiga värden för varje parameter:

  • "Cascade": Utför åtgärden på alla relaterade poster

  • "NoCascade": Utför inte åtgärden på relaterade poster

  • "RemoveLink": Ta bort relationslänken men behåll posterna

  • "Begränsa": Förhindra åtgärden om relaterade poster finns

ColumnInfo

Kolumnmetadata från en Dataverse-tabelldefinition.

ColumnProxy

Fluent-proxy för att skapa OData-filteruttryck från ett kolumnnamn.

Returneras av col. Operatoröverlagringar och metoder skapar FilterExpression instanser som kan skickas till 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

Strukturellt protokoll som gör att typinstanser av entiteter kan skickas till records.create() och records.update().

Implementera det här protokollet på alla entitetsklasser (dataklass, pydantisk modell, handvalsade) så att det kan skickas direkt till CRUD-åtgärder utan att ange tabellnamnet eller konvertera till diktering manuellt.

Obligatoriska klassvariabler:

  • __entity_logical_name__ — Namn på logisk entitet i Dataverse (t.ex. "account")

  • __entity_set_name__ — Namn på OData-entitetsuppsättning (t.ex. "accounts")

Obligatoriska instansmetoder:

  • to_dict() — returnera postnyttolast som dict

  • from_dict(data) — classmethod att rekonstruera från ett svar 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

Direktsändning (client.records.create(entitet) utan tabellnamn

eller diktering) stöds inte ännu och kommer att läggas till i en framtida version.

ExpandOption

Strukturerade alternativ för en $expand navigeringsegenskap.

Tillåter att kapslade $select, $filter, $orderbyoch $top alternativ för en enda navigeringsegenskap utökas enligt OData-syntaxen $expand .

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-frågeobjekt. Ingen HTTP-begäran görs förrän execute eller execute_pages anropas.

Hämtas via client.query.fetchxml(xml).

FilterExpression

Basklass för skrivbara OData-filteruttryck.

Stöder Python operatoröverlagringar för logisk sammansättning:

  • expr1 & expr2 Producerar (expr1 and expr2)

  • expr1 | expr2 Producerar (expr1 or expr2)

  • ~expr Producerar not (expr)

Label

Representerar en etikett som kan ha flera lokaliserade versioner.

LocalizedLabel

Representerar en lokaliserad etikett med en språkkod.

LookupAttributeMetadata

Metadata för ett uppslagsattribut.

Giltiga required_level värden:

  • "Ingen": Attributet är valfritt

  • "Rekommenderas": Attributet rekommenderas

  • "ApplicationRequired": Attributet krävs

ManyToManyRelationshipMetadata

Metadata för en många-till-många-entitetsrelation.

OneToManyRelationshipMetadata

Metadata för en entitetsrelation en-till-många.

QueryBuilder

Fluent-gränssnitt för att skapa och köra OData-frågor mot en synkroniseringsklient.

Tillhandahåller metodlänkning för att konstruera komplexa frågor med skrivbara filteruttryck. Kan användas fristående (via build()) eller bindas till en klient (via execute).

QueryParams

Skriven ordlista som returneras av QueryBuilder.build().

Tillhandahåller automatisk komplettering av IDE när byggresultat skickas till client.records.list() manuellt.

QueryResult

Iterbar omslutning runt en lista över Record objekt.

Returneras av execute (platt läge) och list.

Bakåtkompatibel: for r in result fortsätter att fungera utan ändringar.

RelationshipInfo

Typad returmodell för relationsmetadata.

Returneras av create_one_to_many_relationship, create_many_to_many_relationship, get_relationshipoch 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

Tabellmetadata med dictliknande bakåtkompatibilitet.

Stöder både ny attributåtkomst (info.schema_name) och äldre dikteringsnyckelåtkomst (info["table_schema_name"]) för bakåtkompatibilitet med kod som skrivits mot api:et för rå diktering.

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

Representerar en enda upsert-åtgärd som riktar sig mot en post med dess alternativa nyckel.

Används med upsert till upsert en eller flera poster som identifieras av alternativa nycklar i stället för primära GUID.

Example:


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

Funktioner

col

Returnera ett ColumnProxy för att skapa filteruttryck.

Det här är det föredragna GA-formspråket för att konstruera filteruttryck:


   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

Parametrar

Name Description
name
Obligatorisk

Kolumnlogiskt namn (skiftlägesokänsligt, kommer att sänkas).

Returer

Typ Description

En ColumnProxy bindning till kolumnen.

Undantag

Typ Description

Om name är tomt.

raw

Ordagranna OData-filteruttryck (skickas oförändrad).

Den här funktionen är inte inaktuell – det är OData-utrymningsluckan utan inskriven ersättning.

Example:


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

Parametrar

Name Description
filter_string
Obligatorisk

Raw OData-filtersträng.

Returer

Typ Description

En FilterExpression.