models Paket

Dataverse SDK'sı için veri modelleri ve tür tanımları.

Dataverse varlıkları için veri sınıfları ve yardımcıları sağlar:

Modül

batch

Toplu işlemler için genel sonuç türleri.

fetchxml_query

FetchXmlQuery — QueryOperations.fetchxml() tarafından döndürülen inert sorgu nesnesi.

filters

Dataverse SDK'sı için birleştirilebilir OData filtre ifadeleri.

Karmaşık filtre koşullarını oluşturmak için Python işleç aşırı yüklemeleri (&, |, ~) ile OData $filter dizelerine derlenen bir ifade ağacı sağlar.

Örnek::

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

Dataverse meta verileri için etiket modelleri.

protocol

Yazılan varlık tümleştirmesi için DataverseModel yapısal Protokolü.

query_builder

OData sorguları oluşturmak için akıcı sorgu oluşturucusu.

Yöntem zincirleme ile Dataverse tablolarında karmaşık sorgular oluşturmak için tür açısından güvenli, bulunabilir bir arabirim sağlar.

Örnek::

# 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 verileri için modelleri kaydedin.

relationship

Dataverse için ilişki modelleri (giriş ve çıkış).

table_info

Dataverse için tablo ve sütun meta veri modelleri.

upsert

Dataverse SDK'sı için upsert veri modelleri.

Sınıflar

AlternateKeyInfo

Dataverse tablosu için alternatif anahtar meta verileri.

BatchItemResponse

Toplu istek içindeki tek bir işlemden gelen yanıt.

Yanıtlar gönderme sırasına göre döndürülür. Değişiklik kümesine eklenen işlemler için yanıtlar değişiklik kümesinin konumunda bu sırada görünür.

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

Toplu iş isteğini yürütmenin sonucu.

Gönderilen HTTP işlemi başına bir tane BatchItemResponse içerir. Birden çok HTTP isteğine (örneğin add_columns üç sütunlu) genişleyen işlemler üç girişe katkıda bulunur.

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

İlişki işlemleri için art arda davranışı tanımlar.

Her parametre için geçerli değerler:

  • "Art Arda": İşlemi tüm ilgili kayıtlarda gerçekleştirin

  • "NoCascade": İlgili kayıtlarda işlemi gerçekleştirmeyin

  • "RemoveLink": İlişki bağlantısını kaldırın ancak kayıtları koruyun

  • "Kısıtla": İlgili kayıtlar varsa işlemi engelleyin

ColumnInfo

Dataverse tablo tanımından sütun meta verileri.

ColumnProxy

Sütun adından OData filtre ifadeleri oluşturmak için akıcı ara sunucu.

tarafından coldöndürülür. İşleç aşırı yüklemeleri ve yöntemleri, öğesine QueryBuilder.where()geçirilebilen örnekler üretirFilterExpression.

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

Ve'ye records.create()records.update()geçirilecek türlenmiş varlık örneklerini etkinleştiren Yapısal Protokol.

Tablo adını belirtmeden veya el ile dikteye dönüştürmeden crud işlemlerine doğrudan geçirilmesini sağlamak için bu Protokolü herhangi bir varlık sınıfına (dataclass, Pydantic model, hand-rolled) uygulayın.

Gerekli sınıf değişkenleri:

  • __entity_logical_name__ — Dataverse mantıksal varlık adı (örn. "account")

  • __entity_set_name__ — OData varlık kümesi adı (örn. "accounts")

Gerekli örnek yöntemleri:

  • to_dict() — kayıt yükünü farklı döndür dict

  • from_dict(data) — bir yanıttan yeniden oluşturmak için classmethod 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

Tablo adı olmadan doğrudan gönderim (client.records.create(entity)

veya dict) henüz desteklenmemektedir ve gelecekteki bir sürüme eklenecektir.

ExpandOption

Gezinti $expand özelliği için yapılandırılmış seçenekler.

OData $expand söz dizimini izleyerek tek bir gezinti özelliği genişletmesi için iç içe $select$filter, , $orderbyve $top seçeneklerinin belirtilmesine izin verir.

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 sorgu nesnesi. Çağrılana kadar veya execute_pages çağrılana kadar execute HTTP isteği yapılmaz.

aracılığıyla client.query.fetchxml(xml)elde edilir.

FilterExpression

Birleştirilebilir OData filtre ifadeleri için temel sınıf.

Mantıksal bileşim için Python işleci aşırı yüklemelerini destekler:

  • expr1 & expr2 Üretir (expr1 and expr2)

  • expr1 | expr2 Üretir (expr1 or expr2)

  • ~expr Üretir not (expr)

Label

Birden çok yerelleştirilmiş sürüme sahip olabilecek bir etiketi temsil eder.

LocalizedLabel

Dil koduyla yerelleştirilmiş bir etiketi temsil eder.

LookupAttributeMetadata

Arama özniteliği için meta veriler.

Geçerli required_level değerleri:

  • "Hiçbiri": Özniteliği isteğe bağlıdır

  • "Önerilen": Özniteliği önerilir

  • "ApplicationRequired": Özniteliği gereklidir

ManyToManyRelationshipMetadata

Çoka çok varlık ilişkisi için meta veriler.

OneToManyRelationshipMetadata

Bire çok varlık ilişkisi için meta veriler.

QueryBuilder

Eşitleme istemcisinde OData sorguları oluşturmak ve yürütmek için akıcı arabirim.

Birleştirilebilir filtre ifadeleriyle karmaşık sorgular oluşturmak için yöntem zinciri sağlar. Tek başına kullanılabilir (aracılığıyla build()) veya bir istemciye bağlanabilir (aracılığıyla execute).

QueryParams

tarafından QueryBuilder.build()döndürülen yazılan sözlük.

Derleme sonuçları client.records.list() el ile geçirildiğinde IDE otomatik tamamlama sağlar.

QueryResult

Nesne listesinin Record çevresinde yinelenebilir sarmalayıcı.

(düz mod) ve listtarafından execute döndürülür.

Geriye dönük uyumlu: for r in result Değişiklik olmadan çalışmaya devam eder.

RelationshipInfo

İlişki meta verileri için yazılan dönüş modeli.

, , create_one_to_many_relationshipcreate_many_to_many_relationshipve get_relationshiptarafından create_lookup_fielddöndürülür.

Example:


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

Dikte benzeri geriye dönük uyumluluğu olan tablo meta verileri.

Ham dikte API'sine karşı yazılmış kodla geriye dönük uyumluluk için hem yeni öznitelik erişiminiinfo.schema_name () hem de eski dikte anahtarı erişimini (info["table_schema_name"]) destekler.

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

Bir kaydı alternatif anahtarıyla hedefleyen tek bir upsert işlemini temsil eder.

Birincil GUID'ler yerine alternatif anahtarlar tarafından tanımlanan bir veya daha fazla kaydı yukarı eklemek için ile birlikte upsert kullanılır.

Example:


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

İşlevler

col

Filtre ifadeleri oluşturmak için bir ColumnProxy döndürür.

Bu, filtre ifadeleri oluşturmak için tercih edilen GA deyimidir:


   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

Parametreler

Name Description
name
Gerekli

Sütun mantıksal adı (büyük/küçük harfe duyarsız, küçük harfe dönüştürülür).

Döndürülenler

Tür Description

ColumnProxy Sütuna bağlı.

Özel durumlar

Tür Description

Boşsa name .

raw

Verbatim OData filtre ifadesi (değiştirilmeden geçirilir).

Bu işlev kullanımdan kaldırılmaz ; türü değiştirilmiş olmayan OData kaçış taramasıdır.

Example:


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

Parametreler

Name Description
filter_string
Gerekli

Ham OData filtre dizesi.

Döndürülenler

Tür Description

bir FilterExpression.