List of changes in each version that breaks backward compatibility from a previous version.
TXDataWebDataset now creates string fields (TStringField) for XData entity properties that are enumerated types. In previous versions, integer fields were created. This is actually a bug fix. Integer fields are used for enumerated types when using TMS Aurelius directly in desktop/mobile applications, because an enumerated type in Delphi is, in the end, an ordinal (integer) type.
For TMS Web Core, though, there are no entities, but a direct manipulation of the JSON returned by XData. And in XData JSON representation, an enumerated type is represented as a string (the enum name). For modifying or inserting such property in an entity, user need to provide the string value.
This is a bug fix but breaks existing applications. If by any chance you need to keep the enum fields as integers, set TXDataWebDataset.EnumAsIntegers property to true.
This version is the first "official" (non-beta) support for TMS Web Core, and it has renamed two key components:
•TXDataWebDataset (formely TXDataDataset)
•TXDataWebConnection (formely TXDataConnection)
If you have used a previous version and used the above components in TMS Web Core applications, you might get an error "TXDataConnection not found" when opening the form asking for Cancel or Ignore. Just click Cancel, close the project, and open the offending .pas/.dfm in your preferred text editor (not Delphi - it can be Notepad, for example).
Then replace any occurrence of TXDataDataset with TXDataWebDataset, and any occurrence of TXDataConnection with TXDataWebConnection). In both .pas and .dfm files. Save the files and this will fix the issue.
OnEntityModifying event was being fired before merge operation thus not providing correct information about the object in manager and previous state. In case you want to go back to the previous behavior, set _FixEntityModifyingOnUpsert global variable to false.
_FixEntityModifyingOnUpsert := False;
•TXDataServerModule.PutMode property controls how PUT will behave at server-side
This version fixes a bug that the header xdata-expandlevel was being ignored when returning entity sets. Even though it's a bug fix, this is a breaking change as the server changed its behavior.
a) Example provided in Building The Entity Model topic has changed to illustrate how to correctly build the model in version 1.1 (TXDataModelBuilder constructor and Build method changed the signature).
b) Model is not owned by the TXDataServerModule class and must be now destroyed explicitly. So in the following code:
XDataServerModule := TXDataServerModule.Create(MyUrl, MyConnectionPool, MyModel);
now you need to destroy the model when the server is shutdown:
Note this is not a critical issue because if there is a leak, it will only happen when the whole server application is shutdown. Also, with the new multiple model feature, it's very rare that you would need to create your own model explicitly.