Index: DOM/PM/Maatwerk/Syncs/DotNet/MaatwerkCalculator/impl/Halffabs.cls.xml
===================================================================
diff -u -r66047 -r66354
--- DOM/PM/Maatwerk/Syncs/DotNet/MaatwerkCalculator/impl/Halffabs.cls.xml (.../Halffabs.cls.xml) (revision 66047)
+++ DOM/PM/Maatwerk/Syncs/DotNet/MaatwerkCalculator/impl/Halffabs.cls.xml (.../Halffabs.cls.xml) (revision 66354)
@@ -95,7 +95,11 @@
#dim PropertyNaam, Waarde As %String
Set Klasse = ##class(%Dictionary.CompiledClass).%OpenId(Klassenaam)
Set Halffab.GemaaktVoorKenmerkenSetID = $Piece(Halffab.GemaaktVoorKenmerkenSetID,".",1)
+
// Eerste ronde: properties van de basisklasse
+ // We gebruiken @@IDENTITY voor de foreign key, dit is de autogenerated ID
+ // van deze eerste INSERT.
+ #dim DeclareStuk As %String = "DECLARE @HALFFAB_ID INT;"
#dim IntoStuk As %String = "INSERT INTO " _ ..GeefBasistabelNaam() _ " (ProductID,MyDiscriminator,Versie,LaatstAangepast"
#dim ValuesStuk As %String = "VALUES ('" _ Halffab.GeefProductID() _ "','" _ TypeCode _ "_" _ Rolstukje _ "'," _ 1 _ ",'" _ ..GeefHuidigeTimeStamp()_"'"
Set PropertiesIterator = ##class(TECH.ListIterator).%New(Klasse.Properties)
@@ -118,16 +122,19 @@
}
Set IntoStuk = IntoStuk _ ") "
Set ValuesStuk = ValuesStuk _ "); "
+ #dim AssignStuk As %String = "SET @HALFFAB_ID = @@IDENTITY;"
+
+ #dim Statement As %String = DeclareStuk _ IntoStuk _ ValuesStuk _ AssignStuk
- #dim Statement As %String = IntoStuk _ ValuesStuk
+ // Tweede ronde: Id in tussenliggende klasse toevoegen
+ Set IntoStuk = "INSERT INTO " _ ..GeefTussenliggendeTabelNaam(TypeCode) _ " (Id) "
+ Set ValuesStuk = "VALUES (@HALFFAB_ID);"
+ Set Statement = Statement _ IntoStuk _ ValuesStuk
- // Tweede ronde: properties van de afgeleide klasse
- // We gebruiken SCOPE_IDENTITY() voor de foreign key, dit is de autogenerated ID
- // van de eerste INSERT. De scope is hier de batch van queries
- // (2 inserts gescheiden door ;).
-
+ // Derde ronde: properties van de afgeleide klasse
+ // De scope is hier de batch van queries (2 inserts gescheiden door ;).
Set IntoStuk = "INSERT INTO " _ ..GeefRoltabelNaam(Rolstukje, TypeCode) _ " (Id"
- Set ValuesStuk = "VALUES (SCOPE_IDENTITY()"
+ Set ValuesStuk = "VALUES (@HALFFAB_ID"
Set PropertiesIterator = ##class(TECH.ListIterator).%New(Klasse.Properties)
while (PropertiesIterator.HasNext()) {
@@ -165,42 +172,77 @@
UnId:%String,Rolstukje:%String,TypeCode:%String
+
+UnId:%String,Rolstukje:%String,TypeCode:%String
+TECH.ResultSetIterator
+
+
+
1
%String
+
+TypeCode:%String
+1
+%String
+
+
+
Rolstukje:%String,TypeCode:%String
1