@@ -698,7 +698,7 @@ def _create_entity(
698698 display_name : str ,
699699 attributes : List [Dict [str , Any ]],
700700 solution_unique_name : Optional [str ] = None ,
701- ) -> str :
701+ ) -> Dict [ str , Any ] :
702702 url = f"{ self .api } /EntityDefinitions"
703703 payload = {
704704 "@odata.type" : "Microsoft.Dynamics.CRM.EntityMetadata" ,
@@ -716,24 +716,18 @@ def _create_entity(
716716 if solution_unique_name :
717717 params = {"SolutionUniqueName" : solution_unique_name }
718718 self ._request ("post" , url , json = payload , params = params )
719- ent = self ._wait_for_entity_ready (schema_name )
719+ ent = self ._get_entity_by_schema (
720+ schema_name ,
721+ headers = {"Consistency" : "Strong" },
722+ )
720723 if not ent or not ent .get ("EntitySetName" ):
721724 raise RuntimeError (
722725 f"Failed to create or retrieve entity '{ schema_name } ' (EntitySetName not available)."
723726 )
724- return ent ["MetadataId" ]
725-
726- def _wait_for_entity_ready (self , schema_name : str , delays : Optional [List [int ]] = None ) -> Optional [Dict [str , Any ]]:
727- import time
728- delays = delays or [0 , 2 , 5 , 10 , 20 , 30 ]
729- ent : Optional [Dict [str , Any ]] = None
730- strong_consistency_headers = {"Consistency" : "Strong" }
731- for idx , delay in enumerate (delays ):
732- if idx > 0 and delay > 0 :
733- time .sleep (delay )
734- ent = self ._get_entity_by_schema (schema_name , headers = strong_consistency_headers )
735- if ent and ent .get ("EntitySetName" ):
736- return ent
727+ if not ent .get ("MetadataId" ):
728+ raise RuntimeError (
729+ f"MetadataId missing after creating entity '{ schema_name } '."
730+ )
737731 return ent
738732
739733 def _normalize_attribute_schema (self , entity_schema : str , column_name : str ) -> str :
@@ -1191,20 +1185,18 @@ def _create_table(
11911185 if not solution_unique_name :
11921186 raise ValueError ("solution_unique_name cannot be empty" )
11931187
1194- metadata_id = self ._create_entity (
1188+ metadata = self ._create_entity (
11951189 entity_schema ,
11961190 tablename ,
11971191 attributes ,
11981192 solution_unique_name ,
11991193 )
1200- ent2 : Dict [str , Any ] = self ._wait_for_entity_ready (entity_schema ) or {}
1201- logical_name = ent2 .get ("LogicalName" )
12021194
12031195 return {
12041196 "entity_schema" : entity_schema ,
1205- "entity_logical_name" : logical_name ,
1206- "entity_set_name" : ent2 .get ("EntitySetName" ) if ent2 else None ,
1207- "metadata_id" : metadata_id ,
1197+ "entity_logical_name" : metadata . get ( "LogicalName" ) ,
1198+ "entity_set_name" : metadata .get ("EntitySetName" ),
1199+ "metadata_id" : metadata . get ( "MetadataId" ) ,
12081200 "columns_created" : created_cols ,
12091201 }
12101202
0 commit comments