TableOperations Sınıf
Tablo düzeyinde meta veri işlemleri için ad alanı.
client.tables aracılığıyla erişilir. Dataverse tablolarını oluşturma, silme, inceleme ve listelemenin yanı sıra sütun ekleme ve kaldırma işlemleri sağlar.
Example:
client = DataverseClient(base_url, credential)
# Create a table
info = client.tables.create(
"new_Product",
{"new_Price": "decimal", "new_InStock": "bool"},
solution="MySolution",
)
# List tables
tables = client.tables.list()
# Get table info
info = client.tables.get("new_Product")
# Add columns
client.tables.add_columns("new_Product", {"new_Rating": "int"})
# Remove columns
client.tables.remove_columns("new_Product", "new_Rating")
# Delete a table
client.tables.delete("new_Product")
Oluşturucu
TableOperations(client: DataverseClient)
Parametreler
| Name | Description |
|---|---|
|
client
Gerekli
|
Üst DataverseClient örnek. |
Yöntemler
| add_columns |
Var olan bir tabloya bir veya daha fazla sütun ekleyin. Example:
|
| create |
Belirtilen sütunlarla özel bir tablo oluşturun. |
| create_alternate_key |
Tabloda alternatif bir anahtar oluşturun. Alternatif anahtarlar, upsert işlemlerinin kayıtları birincil GUID yerine bir veya daha fazla sütuna göre tanımlamasına olanak sağlar. Anahtar oluşturulduktan sonra dizin oluşturma için kuyruğa alınır; dizini status hazır olduktan sonra'dan |
| create_lookup_field |
Basit bir arama alanı ilişkisi oluşturun. Bu, var olan bir tabloya arama alanı eklemenin yaygın durumu için sarmalayan create_one_to_many_relationship bir kolaylık yöntemidir. |
| create_many_to_many_relationship |
Tablolar arasında çoka çok ilişkisi oluşturun. Bu işlem, ilişkiyi yönetmek için çoka çok ilişki ve kesişim tablosu oluşturur. |
| create_one_to_many_relationship |
Tablolar arasında bire çok ilişkisi oluşturun. Bu işlem, başvuran tabloda hem ilişkiyi hem de arama özniteliğini oluşturur. |
| delete |
Şema adına göre özel bir tabloyu silin. Warning Bu işlem geri alınamaz ve tablo tanımıyla birlikte tablo. Example:
|
| delete_alternate_key |
Alternatif anahtarı meta veri kimliğine göre silin. Warning Upsert işlemleri tarafından kullanılan alternatif bir anahtarın silinmesi bu işlemlerin başarısız olmasına neden olur. Bu işlem geri alınamaz. Example:
|
| delete_relationship |
İlişkiyi meta veri kimliğine göre silin. Warning İlişki silindiğinde ilişkili arama özniteliği de kaldırılır bire çok ilişkiler için. Bu işlem geri alınamaz. Example:
|
| get |
Tablo varsa, tablo için temel meta verileri alın. Example:
|
| get_alternate_keys |
Tabloda tanımlanan tüm alternatif anahtarları listeleyin. |
| get_relationship |
şema adına göre ilişki meta verilerini alma. Example:
|
| list |
Dataverse ortamındaki özel olmayan tüm tabloları listeleyin. Varsayılan olarak, içindeki Example:
|
| list_columns |
Bir tablonun tüm öznitelik (sütun) tanımlarını listeleyin. Example:
|
| list_relationships |
Ortamdaki tüm ilişki tanımlarını listeleyin. Example:
|
| list_table_relationships |
Belirli bir tablo için tüm ilişkileri listeleyin. , Example:
|
| remove_columns |
Tablodan bir veya daha fazla sütunu kaldırma. Example:
|
add_columns
Var olan bir tabloya bir veya daha fazla sütun ekleyin.
Example:
created = client.tables.add_columns(
"new_MyTestTable",
{"new_Notes": "string", "new_Active": "bool"},
)
print(created) # ['new_Notes', 'new_Active']
add_columns(table: str, columns: Dict[str, Any]) -> List[str]
Parametreler
| Name | Description |
|---|---|
|
table
Gerekli
|
Tablonun şema adı (örn. |
|
columns
Gerekli
|
Sütun şeması adlarının (özelleştirme ön eki ile) türlerine eşleştirilmesi. Desteklenen türler ile createaynıdır. |
Döndürülenler
| Tür | Description |
|---|---|
|
Oluşturulan sütunların şema adları. |
Özel durumlar
| Tür | Description |
|---|---|
|
Tablo yoksa. |
create
Belirtilen sütunlarla özel bir tablo oluşturun.
create(table: str, columns: Dict[str, Any], *, solution: str | None = None, primary_column: str | None = None, display_name: str | None = None) -> TableInfo
Parametreler
| Name | Description |
|---|---|
|
table
Gerekli
|
Özelleştirme ön eki olan tablonun şema adı (örn. |
|
columns
Gerekli
|
Sütun şeması adlarının (özelleştirme ön eki ile) türlerine eşleştirilmesi. Desteklenen türler şunlardır |
|
solution
Gerekli
|
Yeni tablonun sahibi olması gereken isteğe bağlı çözüm benzersiz adı. Atlandığında tablo varsayılan çözümde oluşturulur. |
|
primary_column
Gerekli
|
Özelleştirme ön ekiyle isteğe bağlı birincil ad sütun şeması adı (örneğin |
|
display_name
Gerekli
|
Tablo için okunabilir görünen ad (örn. |
Yalnızca Anahtar Sözcük Parametreleri
| Name | Description |
|---|---|
|
solution
|
Default value: None
|
|
primary_column
|
Default value: None
|
|
display_name
|
Default value: None
|
Döndürülenler
| Tür | Description |
|---|---|
|
, , |
Özel durumlar
| Tür | Description |
|---|---|
|
Tablo oluşturma işlemi başarısız olursa veya tablo zaten varsa. |
Örnekler
Basit sütunlar içeren bir tablo oluşturun:
from enum import IntEnum
class ItemStatus(IntEnum):
ACTIVE = 1
INACTIVE = 2
result = client.tables.create(
"new_Product",
{
"new_Title": "string",
"new_Price": "decimal",
"new_Status": ItemStatus,
},
solution="MySolution",
primary_column="new_ProductName",
display_name="Product",
)
print(f"Created: {result['table_schema_name']}")
create_alternate_key
Tabloda alternatif bir anahtar oluşturun.
Alternatif anahtarlar, upsert işlemlerinin kayıtları birincil GUID yerine bir veya daha fazla sütuna göre tanımlamasına olanak sağlar. Anahtar oluşturulduktan sonra dizin oluşturma için kuyruğa alınır; dizini status hazır olduktan sonra'dan "Pending""Active" geçiş yapacaktır.
create_alternate_key(table: str, key_name: str, columns: List[str], *, display_name: str | None = None, language_code: int = 1033) -> AlternateKeyInfo
Parametreler
| Name | Description |
|---|---|
|
table
Gerekli
|
Tablonun şema adı (örn. |
|
key_name
Gerekli
|
Yeni alternatif anahtar için şema adı (örn. |
|
columns
Gerekli
|
Anahtarı oluşturan sütun mantıksal adlarının listesi (örn. |
|
display_name
Gerekli
|
Anahtarın görünen adı. Sağlanmadığı takdirde varsayılan olarak ayarlanır |
|
language_code
Gerekli
|
Etiketler için dil kodu. Varsayılan değer: 1033 (İngilizce). |
Yalnızca Anahtar Sözcük Parametreleri
| Name | Description |
|---|---|
|
display_name
|
Default value: None
|
|
language_code
|
Default value: 1033
|
Döndürülenler
| Tür | Description |
|---|---|
|
Yeni oluşturulan alternatif anahtar için meta veriler. |
Özel durumlar
| Tür | Description |
|---|---|
|
Tablo yoksa. |
|
|
Web API isteği başarısız olursa. |
Örnekler
upsert için tek sütunlu bir alternatif anahtar oluşturun:
key = client.tables.create_alternate_key(
"new_Product",
"new_product_code_key",
["new_productcode"],
display_name="Product Code",
)
print(f"Key ID: {key.metadata_id}")
print(f"Columns: {key.key_attributes}")
create_lookup_field
Basit bir arama alanı ilişkisi oluşturun.
Bu, var olan bir tabloya arama alanı eklemenin yaygın durumu için sarmalayan create_one_to_many_relationship bir kolaylık yöntemidir.
create_lookup_field(referencing_table: str, lookup_field_name: str, referenced_table: str, *, display_name: str | None = None, description: str | None = None, required: bool = False, cascade_delete: str = 'RemoveLink', solution: str | None = None, language_code: int = 1033) -> RelationshipInfo
Parametreler
| Name | Description |
|---|---|
|
referencing_table
Gerekli
|
Arama alanına (alt tablo) sahip olacak tablonun mantıksal adı. |
|
lookup_field_name
Gerekli
|
Arama alanının şema adı (örn. |
|
referenced_table
Gerekli
|
Başvurulmakta olan tablonun mantıksal adı (üst tablo). |
|
display_name
Gerekli
|
Arama alanının görünen adı. Varsayılan olarak başvurulan tablo adını kullanır. |
|
description
Gerekli
|
Arama alanı için isteğe bağlı açıklama. |
|
required
Gerekli
|
Aramanın gerekli olup olmadığı. Varsayılan değer |
|
cascade_delete
Gerekli
|
Silme davranışı ( |
|
solution
Gerekli
|
İlişkinin ekleneceği isteğe bağlı çözüm benzersiz adı. |
|
language_code
Gerekli
|
Etiketler için dil kodu. Varsayılan değer: 1033 (İngilizce). |
Yalnızca Anahtar Sözcük Parametreleri
| Name | Description |
|---|---|
|
display_name
|
Default value: None
|
|
description
|
Default value: None
|
|
required
|
Default value: False
|
|
cascade_delete
|
Default value: RemoveLink
|
|
solution
|
Default value: None
|
|
language_code
|
Default value: 1033
|
Döndürülenler
| Tür | Description |
|---|---|
|
, , |
Özel durumlar
| Tür | Description |
|---|---|
|
Web API isteği başarısız olursa. |
Örnekler
Basit bir arama alanı oluşturun:
result = client.tables.create_lookup_field(
referencing_table="new_order",
lookup_field_name="new_AccountId",
referenced_table="account",
display_name="Account",
required=True,
cascade_delete=CASCADE_BEHAVIOR_REMOVE_LINK,
)
print(f"Created lookup: {result.lookup_schema_name}")
create_many_to_many_relationship
Tablolar arasında çoka çok ilişkisi oluşturun.
Bu işlem, ilişkiyi yönetmek için çoka çok ilişki ve kesişim tablosu oluşturur.
create_many_to_many_relationship(relationship: ManyToManyRelationshipMetadata, *, solution: str | None = None) -> RelationshipInfo
Parametreler
| Name | Description |
|---|---|
|
relationship
Gerekli
|
Çoka çok ilişkisini tanımlayan meta veriler. |
|
solution
Gerekli
|
İlişki eklemek için isteğe bağlı çözüm benzersiz adı. |
Yalnızca Anahtar Sözcük Parametreleri
| Name | Description |
|---|---|
|
solution
|
Default value: None
|
Döndürülenler
| Tür | Description |
|---|---|
|
, , |
Özel durumlar
| Tür | Description |
|---|---|
|
Web API isteği başarısız olursa. |
Örnekler
Çoka çok ilişkisi oluşturma: Çalışan <-> Proje:
from PowerPlatform.Dataverse.models import (
ManyToManyRelationshipMetadata,
)
relationship = ManyToManyRelationshipMetadata(
schema_name="new_employee_project",
entity1_logical_name="new_employee",
entity2_logical_name="new_project",
)
result = client.tables.create_many_to_many_relationship(relationship)
print(f"Created: {result.relationship_schema_name}")
create_one_to_many_relationship
Tablolar arasında bire çok ilişkisi oluşturun.
Bu işlem, başvuran tabloda hem ilişkiyi hem de arama özniteliğini oluşturur.
create_one_to_many_relationship(lookup: LookupAttributeMetadata, relationship: OneToManyRelationshipMetadata, *, solution: str | None = None) -> RelationshipInfo
Parametreler
| Name | Description |
|---|---|
|
lookup
Gerekli
|
Arama özniteliğini tanımlayan meta veriler. |
|
relationship
Gerekli
|
İlişkiyi tanımlayan meta veriler. |
|
solution
Gerekli
|
İlişki eklemek için isteğe bağlı çözüm benzersiz adı. |
Yalnızca Anahtar Sözcük Parametreleri
| Name | Description |
|---|---|
|
solution
|
Default value: None
|
Döndürülenler
| Tür | Description |
|---|---|
|
, , |
Özel durumlar
| Tür | Description |
|---|---|
|
Web API isteği başarısız olursa. |
Örnekler
Bire çok ilişkisi oluşturma: Departman (1) -> Çalışan (N):
from PowerPlatform.Dataverse.models import (
LookupAttributeMetadata,
OneToManyRelationshipMetadata,
Label,
LocalizedLabel,
CascadeConfiguration,
)
from PowerPlatform.Dataverse.common.constants import (
CASCADE_BEHAVIOR_REMOVE_LINK,
)
lookup = LookupAttributeMetadata(
schema_name="new_DepartmentId",
display_name=Label(
localized_labels=[
LocalizedLabel(label="Department", language_code=1033)
]
),
)
relationship = OneToManyRelationshipMetadata(
schema_name="new_Department_Employee",
referenced_entity="new_department",
referencing_entity="new_employee",
referenced_attribute="new_departmentid",
cascade_configuration=CascadeConfiguration(
delete=CASCADE_BEHAVIOR_REMOVE_LINK,
),
)
result = client.tables.create_one_to_many_relationship(lookup, relationship)
print(f"Created lookup field: {result.lookup_schema_name}")
delete
Şema adına göre özel bir tabloyu silin.
Warning
Bu işlem geri alınamaz ve
tablo tanımıyla birlikte tablo.
Example:
client.tables.delete("new_MyTestTable")
delete(table: str) -> None
Parametreler
| Name | Description |
|---|---|
|
table
Gerekli
|
Tablonun şema adı (örn. |
Özel durumlar
| Tür | Description |
|---|---|
|
Tablo yoksa veya silme başarısız olursa. |
delete_alternate_key
Alternatif anahtarı meta veri kimliğine göre silin.
Warning
Upsert işlemleri tarafından kullanılan alternatif bir anahtarın silinmesi
bu işlemlerin başarısız olmasına neden olur. Bu işlem geri alınamaz.
Example:
client.tables.delete_alternate_key(
"new_Product",
"12345678-1234-1234-1234-123456789abc",
)
delete_alternate_key(table: str, key_id: str) -> None
Parametreler
| Name | Description |
|---|---|
|
table
Gerekli
|
Tablonun şema adı (örn. |
|
key_id
Gerekli
|
Silinecek alternatif anahtarın meta veri GUID'i. |
Özel durumlar
| Tür | Description |
|---|---|
|
Tablo yoksa. |
|
|
Web API isteği başarısız olursa. |
delete_relationship
İlişkiyi meta veri kimliğine göre silin.
Warning
İlişki silindiğinde ilişkili arama özniteliği de kaldırılır
bire çok ilişkiler için. Bu işlem geri alınamaz.
Example:
client.tables.delete_relationship(
"12345678-1234-1234-1234-123456789abc"
)
delete_relationship(relationship_id: str) -> None
Parametreler
| Name | Description |
|---|---|
|
relationship_id
Gerekli
|
İlişki meta verilerinin GUID değeri. |
Özel durumlar
| Tür | Description |
|---|---|
|
Web API isteği başarısız olursa. |
get
Tablo varsa, tablo için temel meta verileri alın.
Example:
info = client.tables.get("new_MyTestTable")
if info:
print(f"Logical name: {info['table_logical_name']}")
print(f"Entity set: {info['entity_set_name']}")
get(table: str) -> TableInfo | None
Parametreler
| Name | Description |
|---|---|
|
table
Gerekli
|
Tablonun şema adı (ör. |
Döndürülenler
| Tür | Description |
|---|---|
|
Tablo meta verileri veya |
get_alternate_keys
Tabloda tanımlanan tüm alternatif anahtarları listeleyin.
get_alternate_keys(table: str) -> List[AlternateKeyInfo]
Parametreler
| Name | Description |
|---|---|
|
table
Gerekli
|
Tablonun şema adı (örn. |
Döndürülenler
| Tür | Description |
|---|---|
|
Alternatif anahtar meta veri nesnelerinin listesi. Alternatif anahtar tanımlanmadıysa boş olabilir. |
Özel durumlar
| Tür | Description |
|---|---|
|
Tablo yoksa. |
|
|
Web API isteği başarısız olursa. |
Örnekler
Alternatif anahtarları listeleyin ve durumlarını yazdırın:
keys = client.tables.get_alternate_keys("new_Product")
for key in keys:
print(f"{key.schema_name}: {key.status}")
get_relationship
şema adına göre ilişki meta verilerini alma.
Example:
rel = client.tables.get_relationship("new_Department_Employee")
if rel:
print(f"Found: {rel.relationship_schema_name}")
get_relationship(schema_name: str) -> RelationshipInfo | None
Parametreler
| Name | Description |
|---|---|
|
schema_name
Gerekli
|
İlişkinin şema adı. |
Döndürülenler
| Tür | Description |
|---|---|
|
İlişki meta verileri veya |
Özel durumlar
| Tür | Description |
|---|---|
|
Web API isteği başarısız olursa. |
list
Dataverse ortamındaki özel olmayan tüm tabloları listeleyin.
Varsayılan olarak, içindeki IsPrivate eq falseher tabloyu döndürür. Sonuçları daha da daraltmak için isteğe bağlı bir OData $filter ifadesi sağlayın.
ifadesi kullanılarak IsPrivate eq falsevarsayılan and yan tümcesiyle birleştirilir.
Example:
# List all non-private tables
tables = client.tables.list()
for table in tables:
print(table["LogicalName"])
# List only tables whose schema name starts with "new_"
custom_tables = client.tables.list(
filter="startswith(SchemaName, 'new_')"
)
# List tables with only specific properties
tables = client.tables.list(
select=["LogicalName", "SchemaName", "EntitySetName"]
)
list(*, filter: str | None = None, select: List[str] | None = None) -> List[Dict[str, Any]]
Parametreler
| Name | Description |
|---|---|
|
filter
Gerekli
|
Döndürülen tabloların listesini daha da daraltmak için isteğe bağlı OData |
|
select
Gerekli
|
Yanıta eklenecek özellik adlarının isteğe bağlı listesi (OData |
Yalnızca Anahtar Sözcük Parametreleri
| Name | Description |
|---|---|
|
filter
|
Default value: None
|
|
select
|
Default value: None
|
Döndürülenler
| Tür | Description |
|---|---|
|
EntityDefinition meta veri sözlüklerinin listesi. |
list_columns
Bir tablonun tüm öznitelik (sütun) tanımlarını listeleyin.
Example:
# List all columns on the account table
columns = client.tables.list_columns("account")
for col in columns:
print(f"{col['LogicalName']} ({col.get('AttributeType')})")
# List only specific properties
columns = client.tables.list_columns(
"account",
select=["LogicalName", "SchemaName", "AttributeType"],
)
# Filter to only string attributes
columns = client.tables.list_columns(
"account",
filter="AttributeType eq 'String'",
)
list_columns(table: str, *, select: List[str] | None = None, filter: str | None = None) -> List[Dict[str, Any]]
Parametreler
| Name | Description |
|---|---|
|
table
Gerekli
|
Tablonun şema adı (ör. |
|
select
Gerekli
|
aracılığıyla |
|
filter
Gerekli
|
İsteğe bağlı OData |
Yalnızca Anahtar Sözcük Parametreleri
| Name | Description |
|---|---|
|
select
|
Default value: None
|
|
filter
|
Default value: None
|
Döndürülenler
| Tür | Description |
|---|---|
|
Ham öznitelik meta veri sözlüklerinin listesi. |
Özel durumlar
| Tür | Description |
|---|---|
|
Tablo bulunamazsa. |
|
|
Web API isteği başarısız olursa. |
list_relationships
Ortamdaki tüm ilişki tanımlarını listeleyin.
Example:
# List all relationships
rels = client.tables.list_relationships()
for rel in rels:
print(f"{rel['SchemaName']} ({rel.get('@odata.type')})")
# Filter by type
one_to_many = client.tables.list_relationships(
filter="RelationshipType eq Microsoft.Dynamics.CRM.RelationshipType'OneToManyRelationship'"
)
# Select specific properties
rels = client.tables.list_relationships(
select=["SchemaName", "ReferencedEntity", "ReferencingEntity"]
)
list_relationships(*, filter: str | None = None, select: List[str] | None = None) -> List[Dict[str, Any]]
Parametreler
| Name | Description |
|---|---|
|
filter
Gerekli
|
İsteğe bağlı OData |
|
select
Gerekli
|
aracılığıyla |
Yalnızca Anahtar Sözcük Parametreleri
| Name | Description |
|---|---|
|
filter
|
Default value: None
|
|
select
|
Default value: None
|
Döndürülenler
| Tür | Description |
|---|---|
|
Ham ilişki meta veri sözlüklerinin listesi. |
Özel durumlar
| Tür | Description |
|---|---|
|
Web API isteği başarısız olursa. |
list_table_relationships
Belirli bir tablo için tüm ilişkileri listeleyin.
, EntityDefinitions({id})/ManyToOneRelationshipsve EntityDefinitions({id})/ManyToManyRelationshipssorgulayarak EntityDefinitions({id})/OneToManyRelationshipsverilen tablo için bire çok, çoka bir ve çoka çok ilişkilerini birleştirir.
Example:
# List all relationships for the account table
rels = client.tables.list_table_relationships("account")
for rel in rels:
print(f"{rel['SchemaName']} -> {rel.get('@odata.type')}")
list_table_relationships(table: str, *, filter: str | None = None, select: List[str] | None = None) -> List[Dict[str, Any]]
Parametreler
| Name | Description |
|---|---|
|
table
Gerekli
|
Tablonun şema adı (örn. |
|
filter
Gerekli
|
Her alt isteğe uygulanan isteğe bağlı OData |
|
select
Gerekli
|
aracılığıyla |
Yalnızca Anahtar Sözcük Parametreleri
| Name | Description |
|---|---|
|
filter
|
Default value: None
|
|
select
|
Default value: None
|
Döndürülenler
| Tür | Description |
|---|---|
|
Bire çok, çoka bir ve çoka çok ilişki meta veri sözlüklerinin birleştirilmiş listesi. |
Özel durumlar
| Tür | Description |
|---|---|
|
Tablo bulunamazsa. |
|
|
Web API isteği başarısız olursa. |
remove_columns
Tablodan bir veya daha fazla sütunu kaldırma.
Example:
removed = client.tables.remove_columns(
"new_MyTestTable",
["new_Notes", "new_Active"],
)
print(removed) # ['new_Notes', 'new_Active']
remove_columns(table: str, columns: str | List[str]) -> List[str]
Parametreler
| Name | Description |
|---|---|
|
table
Gerekli
|
Tablonun şema adı (örn. |
|
columns
Gerekli
|
Kaldırılacak sütun şeması adı veya sütun şeması adları listesi. Özelleştirme ön ekini (örneğin) |
Döndürülenler
| Tür | Description |
|---|---|
|
Kaldırılan sütunların şema adları. |
Özel durumlar
| Tür | Description |
|---|---|
|
Tablo veya belirtilen sütun yoksa. |