Index: DOM/PM/Maatwerk/Syncs/DotNet/MaatwerkCalculator/impl/Halffabs.cls.xml
===================================================================
diff -u -r66359 -r66360
--- DOM/PM/Maatwerk/Syncs/DotNet/MaatwerkCalculator/impl/Halffabs.cls.xml (.../Halffabs.cls.xml) (revision 66359)
+++ DOM/PM/Maatwerk/Syncs/DotNet/MaatwerkCalculator/impl/Halffabs.cls.xml (.../Halffabs.cls.xml) (revision 66360)
@@ -132,41 +132,67 @@
// afgeleide klasse. Zie o.a.
// https://stackoverflow.com/questions/8599617/problems-using-tpt-table-per-type-in-ef-4-2-and-deletion-of-parent-objects
#dim Statement As %String
+ #dim DeleteStatementAfgeleideKlasse As %String
+ #dim DeleteStatementTussenliggendeKlasse As %String
+ #dim DeleteStatementBasisKlasse As %String
+ #dim UpdateStatement As %String
#dim TeVerwijderenIdsIterator As TECH.ResultSetIterator = ..GeefTeVerwijderenIds(UnId, Rolstukje, TypeCode)
- Set Statement = "BEGIN TRAN;"
+ #dim BeginStatement As %String = "BEGIN TRAN;"
+ Set Statement = BeginStatement
- // 1) Verwijderen van de oude versie. We doen hier 3 deletes omdat Entity Framework
- // voor Table Per Type geen cascaded deletes configureert van het record voor de
- // basisklasse naar het record van de afgeleide klasse.
- Set Statement = Statement _ "DELETE s FROM " _ ..GeefRoltabelNaam(Rolstukje, TypeCode) _ " s "_
- "INNER JOIN " _ ..GeefBasistabelNaam() _ " b on s.Id = b.Id " _
- "WHERE b.Versie=0 AND b.GemaaktVoorKenmerkenSetID='" _ UnId _ "'; "
+ // 1) Verwijderen van de oude versie in alle tabellen.
+ Set DeleteStatementAfgeleideKlasse = "DELETE s FROM " _ ..GeefRoltabelNaam(Rolstukje, TypeCode) _ " s "_"INNER JOIN " _ ..GeefBasistabelNaam()
+ _ " b on s.Id = b.Id " _ "WHERE b.Versie=0 AND b.GemaaktVoorKenmerkenSetID='" _ UnId _ "'; "
+
+ Set DeleteStatementTussenliggendeKlasse = ..GeefDeleteStatementTussenliggendeKlasse(TeVerwijderenIdsIterator, TypeCode)
+ Set DeleteStatementBasisKlasse = "DELETE FROM " _ ..GeefBasistabelNaam() _
+ " WHERE Versie=0 AND GemaaktVoorKenmerkenSetID='" _ UnId _ "' AND MyDiscriminator LIKE '"_TypeCode_"%"_Rolstukje_"';"
- If (TeVerwijderenIdsIterator.HasNext()) {
- #dim Inhoud As %ResultSet = TeVerwijderenIdsIterator.Next()
- #dim Id As %Integer = Inhoud.Data("Id")
- Set Statement = Statement _ "DELETE FROM "_ ..GeefTussenliggendeTabelNaam(TypeCode) _" WHERE Id="_Id
- }
+ Set Statement = Statement_DeleteStatementAfgeleideKlasse _ DeleteStatementTussenliggendeKlasse _ DeleteStatementBasisKlasse
- While (TeVerwijderenIdsIterator.HasNext()) {
- Set Inhoud = TeVerwijderenIdsIterator.Next()
- Set Id = Inhoud.Data("Id")
- Set Statement = Statement _ " OR Id="_Id
- }
- Set Statement = Statement _ ";"
-
- Set Statement = Statement _ "DELETE FROM " _ ..GeefBasistabelNaam() _
- " WHERE Versie=0 AND GemaaktVoorKenmerkenSetID='" _ UnId _ "' AND MyDiscriminator LIKE '"_TypeCode_"%"_Rolstukje_"';"
// 2) Update de versie
- Set Statement = Statement _ "UPDATE " _ ..GeefBasistabelNaam()_
- " set Versie=0 WHERE Versie=1 AND GemaaktVoorKenmerkenSetID='" _ UnId _ "'"
- Set Statement = Statement _ "; COMMIT TRAN;"
+ Set UpdateStatement = "UPDATE " _ ..GeefBasistabelNaam()_
+ " set Versie=0 WHERE Versie=1 AND GemaaktVoorKenmerkenSetID='" _ UnId _ "';"
+ Set Statement = Statement _ UpdateStatement
+
+ #dim CommitStatement = "COMMIT TRAN;"
+ Set Statement = Statement _ CommitStatement
Do ..VoeruitSql(Statement)
]]>
+
+1
+%String
+
+
+
+
+TypeCode:%String
+1
+%String
+
+
+
+
+Rolstukje:%String,TypeCode:%String
+1
+%String
+
+
+
+
+1
+%TimeStamp
+
+
+
Halffab:DOM.PM.Maatwerk.Calc.HF.Halffab,Rolstukje:%String,TypeCode:%String,Klasse:%Dictionary.CompiledClass
1
@@ -252,36 +278,27 @@
]]>
-
+
+TeVerwijderenIdsIterator:TECH.ResultSetIterator,TypeCode:%String
1
-%String
-
-
-TypeCode:%String
-1
-%String
-
-
-
-
-Rolstukje:%String,TypeCode:%String
-1
-%String
-
-
-
-
-1
-%TimeStamp
-
-
-
Statement:%String
%ResultSet